1、@Controller、@Service、@Repository、@Component
向容器中注册自己写的类;原理是每个注解都对应一个BeanPostProcessor,在容器启动时会扫描这些BeanPostProcessor,将这些注解标柱的类注册到容器中,后续会说到。
2、@Bean
注册第三方包里面的组件到容器中;类型为返回值的类型,id默认是用方法名作为id,使用如下:
//给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id
@Bean("person")
public Person person(){
return new Person("xiaoming", 20);
}
3、@Import
快速给容器中导入一个组件;
- @Import(要导入到容器中的组件);容器中就会自动注册这个组件,id默认是全类名;
- ImportSelector:返回需要导入的组件的全类名数组;
- ImportBeanDefinitionRegistrar:手动注册bean到容器中
使用如下:
//@Import导入组件,id默认是组件的全类名
@Import({Color.class,Red.class)
public class MyImport {
//自定义逻辑返回需要导入的组件
public class MyImportSelector implements ImportSelector {
//返回值,就是到导入到容器中的组件全类名
//AnnotationMetadata:当前标注@Import注解的类的所有注解信息
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
//方法不要返回null值
return new String[]{"com.bean.Blue","com.bean.Yellow"};
}
}