Spring注入bean的常用的六种方式
一.通过注解注入的一般形式
Bean类
public class TestBean{
}
Configuration类
@Configuration注解去标记了该类,这样标明该类是一个Spring的一个配置类,在加载配置的时候会去加载他。
@Bean的注解,标明这是一个注入Bean的方法,会将下面的返回的Bean注入IOC。
//创建一个class配置文件
@Configuration
public class TestConfiguration{
//将一个Bean交由Spring进行管理
@Bean
public TestBean myBean(){
return new TestBean();
}
}
测试类
ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);
TestBean testBean = cotext.getBean("testBean",TestBean.class);
System.out.println("testBean = " + testBean);
二.通过构造方法注入Bean
我们在生成一个Bean实例的时候,可以使用Bean的构造方法将Bean实现注入
Bean类
@Component
public class TestBeanConstructor {
private AnotherBean anotherBeanConstructor;
@Autowired
public TeanBeanConstructor(AnotherBean anotherBeanConstructor){
this.anotherBeanConstructor = anotherBeanConstructor;
}
@Override
public String toString() {
return "TeanBean{" +
"anotherBeanConstructor=" + anotherBeanConstructor +
'}';
}
}
AnotherBean类
@Component(value="Bean的id,默认为类名小驼峰")
public class AnotherBean {
}
Configuration类
@Configuration
@ComponentScan("com.company.annotationbean")
public class TestConfiguration{
}
三.通过set方法注入Bean
@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
@Component
public class TestBeanProperty {
@Autowired
private AnotherBean anotherBeanProperty;
@Override
public String toString() {
return "TestBeanProperty{" +
"anotherBeanProperty=" + anotherBeanProperty +
'}';
}
}
五.通过List注入Bean
TestBeanList类
方法一:
@Component public class TestBeanList { private List<String> stringList; @Autowired public void setStringList(List<String> stringList) { this.stringList = stringList; } public List<String> getStringList() { return stringList; } }
方法二:
@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; } }
方法三:
@Bean //通过该注解设定Bean注入的优先级,不一定连续数字 @Order(34) public String string1(){ return "String-1"; } @Bean @Order(14) public String string2(){ return "String-2"; }
六.通过Map去注入Bean
@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;
}
}
/**
*第一种注入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;
}
/**
*第二种注入map方式
*/
@Bean
public Integer integer1(){
return 1;
}
@Bean
public Integer integer2(){
return 2;
}
Name:zhengwei
Company:Beyond
思考:学而不思则罔,思而不学则殆!
积累:不积跬步无以至千里!
浙公网安备 33010602011771号