Java web开发(15)Spring入门介绍

IOC入门案例

 有User类

public class User {
public void add() {
        System.out.println("add..........");
    }
}

在Spring的配置文件bean1.xml中如下配置

<bean id="user" class="cn.itcast.ioc.User"></bean>

如下使用

ApplicationContext context = 
                new ClassPathXmlApplicationContext("bean1.xml");
User user=(User)context.getBean("user");
System.out.println(user);
user.add();

Bean的标签:scope

<bean id="user" class="cn.itcast.ioc.User" scope="prototype"></bean>

如果不配置scope默认为singleton

属性注入

有参构造注入

比如类PropertyDemo1,有属性username

private String username;
//有参构造函数
public PropertyDemo1(String username){
this.username=username;
}

通过如下配置为其注入属性

    <bean id="demo" class="cn.itcast.property.PropertyDemo1">
        <constructor-arg name="hello" value="小王小马"></constructor-arg>
    </bean>

Set方法注入对象类型属性

有类UserService

public class UserService {

    //1 定义dao类型属性
    private UserDao userDao;
    //2 生成set方法
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    
    public void add() {
        System.out.println("service.........");
        userDao.add();
    }
}    
    <!-- 1 配置service和dao对象 -->
    <bean id="userDao" class="cn.itcast.ioc.UserDao"></bean>
    
    <bean id="userService" class="cn.itcast.ioc.UserService">

        <property name="userDao" ref="userDao"></property>
    </bean>

name :UserService中UserDao属性名称

ref,UserDao类在bean中的id值。

注解开发

目的:使用注解的方式替代bean配置

比如,上面的User可以改成如下

@Component(value="user")
public class User{
.....
}

说明:这个注解就等效于

<bean id="user" class="....">

Component,Service都是一个意思。

配置:在原来配置bean的文件中使用

<context:component-scan base-package="cn.itcast"></context:component-scan>

base-package可以学包名,也可以是开头为cn.itcast的所有包。

注解方式使用事务

    <!-- 第一步配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    
    <!-- 第二步 开启事务注解 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

在需要使用事务的方法上面使用@Transactional

 注解方式注入属性

上面的UserService,不使用配置,使用注解改写成

@Component(value="id_of_dao")
public class UserDao {

    public void add() {
        System.out.println("dao.........");
    }
}

@Service(value="userService")
public class UserService {

    @Resource(name="id_of_dao")
    private UserDao db;
    
    public void add() {
        System.out.println("service...........");
        db.add();
    }
}

// 测试代码
@Test
    public void testService() {
        ApplicationContext context = 
                new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = (UserService) context.getBean("userService");
        userService.add();
    }


//输出
service...........
dao........

猜你喜欢

转载自www.cnblogs.com/legion/p/9559885.html