spring学习笔记(五):依赖注入,通过 IOC 容器给对象的属性注入值

1、通过 构造函数 给对象的属性 注入值:

spring学习笔记(三):通过 IOC 创建 有参构造 的对象

 

2、通过 setter 方法给对象的属性 注入值:普通属性直接赋值

实体类 User.java:

/**
 * 实体类 javabean
 */
public class User {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

bean.xml:




    
    
        
                
        
    

测试程序 Demo.java:

public class Demo {
    @Test
    public void test1() {
        // 创建 IOC 容器
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");

        // 获取对象
        User user = (User) context.getBean("user");
        System.out.println(user);
    }
}

结果:

spring学习笔记(五):依赖注入,通过 IOC 容器给对象的属性注入值_第1张图片 

 

3、 通过 setter 方法给对象的属性 注入值:对象属性需要引入外部的对象进行赋值

UserDao.java:

public class UserDao {
    public void save(){
        System.out.println("保存数据");
    }
}

UserService.java:

public class UserService {

    // 对象的属性
    private UserDao userDao;

    // 对象属性的 setter 方法:IOC 将通过该 setter 方法给属性 注入值
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save(){
        userDao.save();
    }
}

UserAction.java:

public class UserAction {

    // 对象的属性
    private UserService userService;

    // 对象属性的 setter 方法:IOC 将通过该 setter 方法给属性 注入值
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public void save(){
        userService.save();
    }
}

bean.xml:

    
    

    
    
        
        
    

    
    
        
        
    

测试程序 Demo.java: 

public class Demo {
    @Test
    public void test1() {
        // 创建 IOC 容器
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");

        // 获取对象
        UserAction userAction = (UserAction) context.getBean("userAction");
        userAction.save();
    }
}

结果:

spring学习笔记(五):依赖注入,通过 IOC 容器给对象的属性注入值_第2张图片

 

4、 通过 setter 方法给对象的属性 注入值:使用 内部bean 方式

使用上面的 UserDao.java、UserService.java、UserAction.java、Demo.java,修改 bean.xml 为:

    
       
                                   
                      
                                       
                         
                
            
        
    

 

5、 通过 setter 方法给对象的属性 注入值:使用 p名称空间 方式,普通属性使用 p:属性名 直接进行赋值。

bean.xml:

    
    

 

6、 通过 setter 方法给对象的属性 注入值:使用 p名称空间 方式,对象属性使用 p:属性名-ref 引用外部对象进行 注入值

bean.xml:

    
    

    
    

    
    

 

你可能感兴趣的:(spring学习笔记)