1.场景
在spring 中使用注解,常使用@Autowired, 默认是根据类型Type来自动注入的。但有些特殊情况,对同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种的情况下 @Primary 的作用就出来了。下面是个简单的使用例子。
2.示例
dao层代码:
@Repository
public class DaoTest {
public int age = 10;
DaoTest(int age){
this.age= age;
}
DaoTest(){
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}controller代码:
@Controller
public class Controllertest {
@Autowired
private DaoTest daoTest;
@Override
public String toString() {
return daoTest.age+"";
}
}配置文件
@Configuration
@ComponentScan("com.jxhx.spring.bean")
public class BeanConfig {
@Bean
public DaoTest daoTest(){
return new DaoTest(1);
}
@Bean
@Primary
public DaoTest daoTest2(){
return new DaoTest(2);
}
}测试类
@Repository
public class DaoTest {
public int age = 10;
DaoTest(int age){
this.age= age;
}
DaoTest(){
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}当@Primary放在daoTest2()方法时输出
2
当@Primary放在daoTest()方法时输出
1
版权声明:本文为qq_34351177原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。