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 ; } |
Name:zhengwei
Company:Beyond
思考:学而不思则罔,思而不学则殆!
积累:不积跬步无以至千里!
分类:
Spring用法积累
标签:
Spring用法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律