随笔 - 46  文章 - 0  评论 - 1  阅读 - 3344

Spring注入bean的常用的六种方式

一.通过注解注入的一般形式

Bean类

1
2
public class TestBean{
}

Configuration类

@Configuration注解去标记了该类,这样标明该类是一个Spring的一个配置类,在加载配置的时候会去加载他。

@Bean的注解,标明这是一个注入Bean的方法,会将下面的返回的Bean注入IOC。

1
2
3
4
5
6
7
8
9
//创建一个class配置文件
@Configuration
public class TestConfiguration{
 //将一个Bean交由Spring进行管理
    @Bean
    public TestBean myBean(){
        return new TestBean();
    }
}

测试类

1
2
3
ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);
TestBean testBean = cotext.getBean("testBean",TestBean.class);
System.out.println("testBean = " + testBean);

 

二.通过构造方法注入Bean

我们在生成一个Bean实例的时候,可以使用Bean的构造方法将Bean实现注入

Bean类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Component
public class TestBeanConstructor {
 
 private AnotherBean anotherBeanConstructor;
 
 @Autowired
 public TeanBeanConstructor(AnotherBean anotherBeanConstructor){
     this.anotherBeanConstructor = anotherBeanConstructor;
 }
 
 @Override
 public String toString() {
     return "TeanBean{" +
         "anotherBeanConstructor=" + anotherBeanConstructor +
         '}';
 }
}

AnotherBean类

1
2
3
@Component(value="Bean的id,默认为类名小驼峰")
public class AnotherBean {
}

Configuration类 

1
2
3
4
@Configuration
@ComponentScan("com.company.annotationbean")
public class TestConfiguration{
}

 

三.通过set方法注入Bean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Component
public class TestBeanSet {
 
 private AnotherBean anotherBeanSet;
 
 @Autowired
 public void setAnotherBeanSet(AnotherBean anotherBeanSet) {
     this.anotherBeanSet = anotherBeanSet;
 }
 
 @Override
 public String toString() {
     return "TestBeanSet{" +
         "anotherBeanSet=" + anotherBeanSet +
         '}';
 }
}

 

四.通过属性去注入Bean

1
2
3
4
5
6
7
8
9
10
11
12
13
@Component
public class TestBeanProperty {
 
 @Autowired
 private AnotherBean anotherBeanProperty;
 
 @Override
 public String toString() {
     return "TestBeanProperty{" +
         "anotherBeanProperty=" + anotherBeanProperty +
         '}';
 }
}

 

五.通过List注入Bean

TestBeanList类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
方法一:<br><br>@Component
public class TestBeanList {
 
 private List<String> stringList;
 
 @Autowired
 public void setStringList(List<String> stringList) {
     this.stringList = stringList;
 }
 
 public List<String> getStringList() {
     return stringList;
 }
}
1
2
3
4
5
6
7
8
9
10
11
12
方法二:<br><br>@Configuration
@ComponentScan("annoBean.annotationbean")
public class TestConfiguration {
 
    @Bean
    public List<String> stringList(){
       List<String> stringList = new ArrayList<String>();
       stringList.add("List-1");
       stringList.add("List-2");
       return stringList;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
方法三:<br><br>@Bean
//通过该注解设定Bean注入的优先级,不一定连续数字
@Order(34)
public String string1(){
    return "String-1";
}
 
@Bean
@Order(14)
public String string2(){
    return "String-2";
}

  

六.通过Map去注入Bean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@Component
public class TestBeanMap {
 
 private Map<String,Integer> integerMap;
 
 public Map<String, Integer> getIntegerMap() {
     return integerMap;
 }
 
 @Autowired
 public void setIntegerMap(Map<String, Integer> integerMap) {
     this.integerMap = integerMap;
 }
}
<br>/**
*第一种注入map方式
*/
@Bean
public Map<String,Integer> integerMap(){
    Map<String,Integer> integerMap = new HashMap<String, Integer>();
    integerMap.put("map-1",1);
    integerMap.put("map-2",2);
    return integerMap;
}
<br>/**
*第二种注入map方式
*/
@Bean
public Integer integer1(){
    return 1;
}
 
@Bean
public Integer integer2(){
    return 2;
}

 

posted on   回憶′亂人心  阅读(215)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示