被 @Configuration
标注的类,会被 Spring 的IOC容器认定为配置类。
一个被 @Configuration
标注的类,相当于一个 applicationContext.xml
的配置文件。
例如:声明一个类,并标注 @Configuration
注解:
public class ConfigurationDemo { public Date currentDate() { return new Date(); } }
上述注册Bean的方式类比于xml:
<bean id="currentDate" class="java.util.Date"/>
之后使用注解启动方式,初始化一个IOC容器,并打印IOC容器中的所有bean的name:
public class MainApp { public static void main(String[] args) throws Exception { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigurationDemo.class); String[] beanDefinitionNames = ctx.getBeanDefinitionNames(); Stream.of(beanDefinitionNames).forEach(System.out::println); } }
输出结果:
org.springframework.context.annotation.internalConfigurationAnnotationProcessor org.springframework.context.annotation.internalAutowiredAnnotationProcessor org.springframework.context.annotation.internalCommonAnnotationProcessor org.springframework.context.event.internalEventListenerProcessor org.springframework.context.event.internalEventListenerFactory configurationDemo currentDate
可以发现组件,以及配置类本身被成功加载。