//不自動注入 AbstractBeanDefinition.AUTOWIRE_NO //根據類型自動裝配(但是這個類型是根據set***方法進行裝配的) AbstractBeanDefinition.AUTOWIRE_BY_TYPE //根據名稱自動裝配 AbstractBeanDefinition.AUTOWIRE_BY_NAME //根據構造函數自動裝配 AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR
默認為
@Repository
public class UserDao1 {
private BookDao1 bookDao1;
public BookDao1 getBookDao1() {
return bookDao1;
}
public void setBookDao1(BookDao1 bookDao1) {
System.out.println("setBookDao1.......");
this.bookDao1 = bookDao1;
}
}
@Repository
public class BookDao1 {
@Configuration
@ComponentScan("com.tian")
public class AppConfig {
}
@Test
public void test_auto(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
System.out.println(context.getBean(UserDao1.class).getBookDao1());
}
public class MyImportRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
GenericBeanDefinition beanDefinition = (GenericBeanDefinition) registry.getBeanDefinition("userDao1");
//修改自動注入模型
beanDefinition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
registry.registerBeanDefinition("userDao1", beanDefinition);
}
}
public void setBookDao1(BookDao1 bookDao1) {
}
參見:https://juejin.im/post/5d99fcc7e51d457822796ea1
