一, 很久很久以前, 当我们不用@Autowire注解时, 依赖注入要么通过setter方法, 要么通过构造方法;
需要在配置文件里配置一大堆property-ref..........
二, 若使用注解, 则造成代码的侵入性较强, 后期改起来也很蛋疼;
三, 怎么办? -----> 用default-autowire!!
废话不多说, 直接上代码:
1, 配置文件:
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" 5 default-autowire="byName"> //default-autowire 还可以配的值有, byType or constructo
6 7 <bean id = "demo1" class="testspring.Demo1"></bean> 8 <bean id = "demo2" class="testspring.Demo2"></bean> 9 10 </beans>
2, 当开启default-wire, Spring会根据相应的策略对bean进行自动装配.
byName或byType都是set方法注入, 区别根据名称应该就能看出来;
constructor则是利用构造方法注入;
2.1 ---- byName
1 public class Demo1 { 2 3 private Demo2 demo2; //引用名必须与bean的id相同 4 5 public void setDemo2(Demo2 demo2) { 6 this.demo2 = demo2; 7 } 8 }
2.2 ---byType
1 public class Demo1 { 2 3 private Demo2 hehe; //Demo2只要配置成bean就可以成功注入11 12 public void setHehe(Demo2 demo2) { 13 this.hehe = demo2; 14 } 15 }
2.3---constructor
1 public class Demo1 { 2 3 private Demo2 demo2; 4 5 public Demo1(Demo2 demo2) { 6 this.demo2 = demo2; 7 } 8 }