Spring 容器Bean的注入

一、构造方法注入

二、Setter方法注入

三、属性注入

四、配合Bean进行参数注入


一、构造方法注入

// 需要用到 Hello 类
// 1. 先让 Person 类被注册进 Spring 容器,并且,实例化过程委托给 Spring。—— @Component 修饰 Person 类 :对象的卖方(卖 Person 对象)
// 2. 要求 Hello 类已经被注册到 Spring 容器中了(类注册 or 方法注册都可以):对象的买方(买 Hello 对象)
// 2.1. 直接使用构造方法注入
@Component
public class Person {
    @Autowired  // 这个注解其实可以不写,但建议写上,主要是让看代码的人,知道我们的 Hello 对象是被注入的
                // 如果有多个构造方法,告诉 Spring,实例化 Person 对象时,应该调用哪个
    public Person(Hello hello) {
        System.out.println("Person(), hello = " + hello);
    }

    public Person(int x) {
        System.out.println("Person()");
    }
}

二、Setter方法注入

// 需要用到 Hello 类
// 1. 先让 Person 类被注册进 Spring 容器,并且,实例化过程委托给 Spring。—— @Component 修饰 Person 类 :对象的卖方(卖 Person 对象)
// 2. 要求 Hello 类已经被注册到 Spring 容器中了(类注册 or 方法注册都可以):对象的买方(买 Hello 对象)
// 2.2. 使用 setter 方法去注入
@Component
public class Person2 {
    public Person2() {
        System.out.println("Person2() 被调用");
    }

    @Autowired  // 必须带上
    public void setHello(Hello hello) {
        System.out.println("setHello(), hello = " + hello);
    }
}

三、属性注入

// 需要用到 Hello 类
// 1. 先让 Person 类被注册进 Spring 容器,并且,实例化过程委托给 Spring。—— @Component 修饰 Person 类 :对象的卖方(卖 Person 对象)
// 2. 要求 Hello 类已经被注册到 Spring 容器中了(类注册 or 方法注册都可以):对象的买方(买 Hello 对象)
// 2.2. 使用属性直接注入
@Component
public class Person3 {
    @Autowired  // hello 属性的值会被 Spring 容器对象注入
    private Hello hello;    // 通过反射方式,即使是 private,也可以绕开访问限制

    public Person3()   {
        System.out.println("Person3() 被调用");
    }

    public void printHello() {
        System.out.println("printHello(), hello = " + this.hello);
    }
}

四、配合Bean进行参数注入

@Configuration
public class AppConfig {
    
    @Bean   // 这里的 Hello hello 由 Spirng 注入
    // 因为 createPerson 被 Spring 调用,它可以填写我们指定的需要的参数
    public Person createPerson(@Autowired Hello hello) {
        System.out.println("createPerson(), hello = " + hello);
        return new Person(hello);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值