Java注⼊bean的⽅式_多种⽅式实现Spring的Bean注⼊Spring的核⼼是控制反转(IoC)和⾯向切⾯(AOP)。
Spring就是⼀个⼤⼯⼚(容器),可以将所有对象创建和依赖关系维护,交给Spring管理 。
Spring⼯⼚是⽤于⽣成Bean,对Bean进⾏管理。
在Spring中,所有Bean的⽣命周期都交给Ioc容器管理。
Spring中,Spring可以通过Xml形式或注解的形式来管理Bean 。
下⾯基于注解的形式,采⽤多种⽅式实现Spring的Bean注⼊。具体如下:
⼀、通过⽅法注⼊Bean
1. 通过构造⽅法注⼊Bean
实例代码:
@Component("anotherBean1")
public class AnotherBean {
}
@Component
public class MyBean1 {
private AnotherBean anotherBean1;
public MyBean1(AnotherBean anotherBean1) {
this.anotherBean1 = anotherBean1;
}
@Override
public String toString() {
return "MyBean1{" +
"anotherBean1=" + anotherBean1 +
'}';
}
}
2.通过Set⽅法注⼊Bean
实例代码:
@Component
public class MyBean2 {
private AnotherBean anotherBean2;
@Autowired
public void setAnotherBean2(AnotherBean anotherBean2) {
this.anotherBean2 = anotherBean2;
}
@Override
public String toString() {
return "MyBean2{" +
"anotherBean2=" + anotherBean2 +
'}';
}
}
⼆、通过属性注⼊Bean
@Component
public class MyBean3 {
@Autowired
private AnotherBean anotherBean3;
@Override
public String toString() {
return "MyBean3{" +
"anotherBean3=" + anotherBean3 +
'}';
}
}
三、通过集合类型注⼊Bean
1. 直接注⼊集合实例
List集合注⼊Bean
@Component
public class MyBean4 {
private List stringList;
public List getStringList() {
return stringList;
}
@Autowired
public void setStringList(List stringList) { this.stringList = stringList;
}
private List stringList1;
public List getStringList1() {
return stringList1;
}
@Autowired
@Qualifier("stringList1") //使⽤@Qualifier注解指定bean的Id,此处的Id与BeanConfiguration类中的stringList1⽅法的Bean 的Id 要⼀致
public void setStringList1(List stringList1) {
this.stringList1 = stringList1;
}
@Override
public String toString() {
return "MyBean4{" +
"stringList=" + stringList +
", stringList1=" + stringList1 +
'}';
}
}
Map集合注⼊Bean
@Component
public class MyBean5 {
private Map integerMap;
public Map getIntegerMap() {
return integerMap;
}
@Autowired //加上@Autowired 注解是希望Spring帮我们完成注⼊
public void setIntegerMap(Map integerMap) {
this.integerMap = integerMap;
}
@Override
public String toString() {
return "MyBean5{" +
"integerMap=" + integerMap +
'}';
}
}
2. 将多个泛型的实例注⼊到集合
(1)将多个泛型的实例注⼊到List
(2)控制泛型实例在List中的顺序
(3)将多个泛型的实例注⼊到Map@Configuration
@ComponentScan("com.lhf.spring.bean")
public class BeanConfiguration {
//⽅式⼀: List集合注⼊Bean
@Bean //告知这个Bean将会交给Spring进⾏管理
public List stringList(){
//List集合有序可重复
List list = new ArrayList();
list.add("111");
list.add("222");
list.add("333");
return list;
}
@Bean("stringList1") //告知这个Bean将会交给Spring进⾏管理, 指定Bean的Id public List stringList1(){
//List集合有序可重复
List list = new ArrayList();
list.add("1111");
list.add("2222");
list.add("3333");
return list;
}
//⽅式⼆:List集合注⼊Bean, 注意类型⼀定要与List集合的类型⼀致
@Bean
@Order(100) //@Order注解指定顺序
public String string1(){
return "444";
}
@Bean
@Order(1)
public String string2(){
return "555";
}
@Bean
@Order(50)
public String string3(){
return "666";
}
//----------------------------------------------------------------//
//⽅式⼀:Map集合注⼊Bean
@Bean
public Map integerMap(){
Map map = new HashMap<>();
map.put("aaa", 1111);
map.put("bbb", 2222);
map.put("ccc", 3333);
return map;
}
//⽅式⼆:Map集合注⼊Bean, 注意类型⼀定要与Map集合的类型⼀致@Bean("int1")
public Integer integer1(){
return 10001;
spring ioc注解}
@Bean("int2")
public Integer integer2(){
return 10002;
}
}
四、简单类型(String、Integer)直接注⼊Bean
@Component
public class MyBean6 {
private String string;
private Integer integer;
public String getString() {
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论