- SpringAnnotaiton(一)
- Conditional注解
- Primary、Qualifier注解
- Primary
- import、importResource
- 持续跟新
- Conditional
PorscheCar类
public class PorscheCar implements Car{
@Override
public String toString() {
return "PorscheCar{}";
}
}
CarFactory类实现Condition接口
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypemetadata;
public class CarFactory implements Condition{
public boolean matches(ConditionContext context, AnnotatedTypemetadata metadata) {
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
try {
Object carFactory = beanFactory.getBean("carFactory");
}catch (Exception ex){
return false;
}
return true;
}
}
JavaConfig配置Bean
@Configuration
public class SpringJavaConfig02 {
@Bean
@Conditional(CarFactory.class)
public Car porscheCar(){
return new PorscheCar();
}
}
测试类
@Test
public void test06(){
AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext(SpringJavaConfig02.class);
System.out.println(acac.getBean("porscheCar", PorscheCar.class));
}
Primary、Qualifier注解 Primary配置文件中放开CarFactoryBean的创建后
Car接口
public interface Car {
}
Car实现类 PorscheCar、BMWCar
@Component
public class PorscheCar implements Car{
@Override
public String toString() {
return "PorscheCar{}";
}
}
@Component
public class BMWCar implements Car{
@Override
public String toString() {
return "BMWCar{}";
}
}
FourSStores类
@Component
public class FourSStores {
@Autowired
private Car car;
@Override
public String toString() {
return "FourSStores{" +
"car=" + car +
'}';
}
}
扫描注解配置类
@Configuration
@ComponentScan(value = "com.test.springdome02")
public class SpringConfig {
}
测试类
@Test
public void test07(){
AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext(SpringConfig.class);
System.out.println(acac.getBean("fourSStores", FourSStores.class));
}
给BMWCar增加Primary注解
@Component
@Primary
public class BMWCar implements Car{}
import、importResource
持续跟新


