我是靠谱客的博主 活力豌豆,最近开发中收集的这篇文章主要介绍Spring 容器Bean的注入一、构造方法注入二、Setter方法注入三、属性注入四、配合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);
}
}
最后
以上就是活力豌豆为你收集整理的Spring 容器Bean的注入一、构造方法注入二、Setter方法注入三、属性注入四、配合Bean进行参数注入的全部内容,希望文章能够帮你解决Spring 容器Bean的注入一、构造方法注入二、Setter方法注入三、属性注入四、配合Bean进行参数注入所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复