bean
代指的就是那些被 IoC 容器所管理的对象。我们需要告诉 IoC 容器帮助我们管理哪些对象,可以是 XML 文件、注解或者 Java 配置类,目前常用的为注解方式声明 bean,有以下几种方式:
@Component
:指定把⼀个对象加⼊ IOC 容器,作用在类上。Spring 中提供 @Component
的三个衍生注解(功能目前来讲是一致的),分别是 @Controller
、@Repository
、@Service
@Bean
:该注解只能写在方法上,表明使用此方法创建一个对象(当前方法的返回值),并且放入 spring 容器。@Bean
注解比 @Component
注解的自定义性更强,而且很多地方我们只能通过 @Bean
注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring容器时,则只能通过 @Bean
来实现。
@Import
:用于导入其他类。在引入其他配置类时,可以不用再写 @Configuration
注解。当然,写上也没问题,导入类在容器中的 id 默认为全路径名称。
@ImportResource
:用于导入 spring 配置文件.xml,实现 xml 配置的装载(比如项目要兼容老项目的 xml 配置,可以使用 @ImportResource
注解装载原始配置)
@ImportSelector
:新建一个类实现 ImportSelector 接口,然后重写其 selectImports 方法,其返回值(一个数组)用于定义一些要加载到容器中的全限定类名,然后使用 @ImportSelector
将此类导入即可。SpringBoot 的自动装配使用了此注解来实现。