前言
从Spring3.0开始,@Configuration用于定义配置类,可以替换Spring的xml配置文件,常常配合@Bean使用,一个@Configuration注解的类中可以有一个或多个@Bean注解的方法
详细使用方法
- 单独使用@Configuration注解在类上
@Configuration
public class TestConfiguration {
public TestConfiguration() {
System.out.println("TestConfiguration容器启动初始化。。。");
}
}
这种相当于加载了一个spring配置文件,<beans></beans>标签你没有配置任何一个<bean></bean>相当于下面这样的Spring的xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="[http://www.springframework.org/schema/beans](http://www.springframework.org/schema/beans)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)"
xmlns:context="[http://www.springframework.org/schema/context](http://www.springframework.org/schema/context)" xmlns:jdbc="[http://www.springframework.org/schema/jdbc](http://www.springframework.org/schema/jdbc)"
xmlns:jee="[http://www.springframework.org/schema/jee](http://www.springframework.org/schema/jee)" xmlns:tx="[http://www.springframework.org/schema/tx](http://www.springframework.org/schema/tx)"
xmlns:util="[http://www.springframework.org/schema/util](http://www.springframework.org/schema/util)" xmlns:task="[http://www.springframework.org/schema/task](http://www.springframework.org/schema/task)" xsi:schemaLocation="
[http://www.springframework.org/schema/beans](http://www.springframework.org/schema/beans) [http://www.springframework.org/schema/beans/spring-beans-4.0.xsd](http://www.springframework.org/schema/beans/spring-beans-4.0.xsd)
[http://www.springframework.org/schema/context](http://www.springframework.org/schema/context) [http://www.springframework.org/schema/context/spring-context-4.0.xsd](http://www.springframework.org/schema/context/spring-context-4.0.xsd)
[http://www.springframework.org/schema/jdbc](http://www.springframework.org/schema/jdbc) [http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd](http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd)
[http://www.springframework.org/schema/jee](http://www.springframework.org/schema/jee) [http://www.springframework.org/schema/jee/spring-jee-4.0.xsd](http://www.springframework.org/schema/jee/spring-jee-4.0.xsd)
[http://www.springframework.org/schema/tx](http://www.springframework.org/schema/tx) [http://www.springframework.org/schema/tx/spring-tx-4.0.xsd](http://www.springframework.org/schema/tx/spring-tx-4.0.xsd)
[http://www.springframework.org/schema/util](http://www.springframework.org/schema/util) [http://www.springframework.org/schema/util/spring-util-4.0.xsd](http://www.springframework.org/schema/util/spring-util-4.0.xsd)
[http://www.springframework.org/schema/task](http://www.springframework.org/schema/task) [http://www.springframework.org/schema/task/spring-task-4.0.xsd](http://www.springframework.org/schema/task/spring-task-4.0.xsd)" default-lazy-init="false">
</beans>
- @Configuration注解类+@Bean注解方法
@Configuration
public class TestConfiguration {
public TestConfiguration() {
System.out.println("TestConfiguration容器启动初始化。。。");
}
// @Bean注解注册bean,同时可以指定初始化和销毁方法
// @Bean(name="testBean",initMethod="start",destroyMethod="cleanUp")
@Bean
@Scope("prototype")
public TestBean testBean() {
return new TestBean();
}
}
这等同于在<beans></beans>标签中配置一个<bean id="testBean" class="TestBean"></bean>,并且可以在@Bean中指定实例的初始化方法和销毁方法,等效于下面的Spring的xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="[http://www.springframework.org/schema/beans](http://www.springframework.org/schema/beans)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)"
xmlns:context="[http://www.springframework.org/schema/context](http://www.springframework.org/schema/context)" xmlns:jdbc="[http://www.springframework.org/schema/jdbc](http://www.springframework.org/schema/jdbc)"
xmlns:jee="[http://www.springframework.org/schema/jee](http://www.springframework.org/schema/jee)" xmlns:tx="[http://www.springframework.org/schema/tx](http://www.springframework.org/schema/tx)"
xmlns:util="[http://www.springframework.org/schema/util](http://www.springframework.org/schema/util)" xmlns:task="[http://www.springframework.org/schema/task](http://www.springframework.org/schema/task)" xsi:schemaLocation="
[http://www.springframework.org/schema/beans](http://www.springframework.org/schema/beans) [http://www.springframework.org/schema/beans/spring-beans-4.0.xsd](http://www.springframework.org/schema/beans/spring-beans-4.0.xsd)
[http://www.springframework.org/schema/context](http://www.springframework.org/schema/context) [http://www.springframework.org/schema/context/spring-context-4.0.xsd](http://www.springframework.org/schema/context/spring-context-4.0.xsd)
[http://www.springframework.org/schema/jdbc](http://www.springframework.org/schema/jdbc) [http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd](http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd)
[http://www.springframework.org/schema/jee](http://www.springframework.org/schema/jee) [http://www.springframework.org/schema/jee/spring-jee-4.0.xsd](http://www.springframework.org/schema/jee/spring-jee-4.0.xsd)
[http://www.springframework.org/schema/tx](http://www.springframework.org/schema/tx) [http://www.springframework.org/schema/tx/spring-tx-4.0.xsd](http://www.springframework.org/schema/tx/spring-tx-4.0.xsd)
[http://www.springframework.org/schema/util](http://www.springframework.org/schema/util) [http://www.springframework.org/schema/util/spring-util-4.0.xsd](http://www.springframework.org/schema/util/spring-util-4.0.xsd)
[http://www.springframework.org/schema/task](http://www.springframework.org/schema/task) [http://www.springframework.org/schema/task/spring-task-4.0.xsd](http://www.springframework.org/schema/task/spring-task-4.0.xsd)" default-lazy-init="false”>
<bean id="testBean" class="TestBean"></bean>
</beans>
- @Configuration注解类+ @ComponentScan注解类
@Configuration
//添加自动扫描注解,basePackages为TestBean包路径
@ComponentScan(basePackages = "com.xxx.demo.configuration")
public class TestConfiguration {
public TestConfiguration() {
System.out.println("TestConfiguration容器启动初始化。。。");
}
}
@ComponentScan用于配置自动扫描包,等效于下面的Spring的xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="[http://www.springframework.org/schema/beans](http://www.springframework.org/schema/beans)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)"
xmlns:context="[http://www.springframework.org/schema/context](http://www.springframework.org/schema/context)" xmlns:jdbc="[http://www.springframework.org/schema/jdbc](http://www.springframework.org/schema/jdbc)"
xmlns:jee="[http://www.springframework.org/schema/jee](http://www.springframework.org/schema/jee)" xmlns:tx="[http://www.springframework.org/schema/tx](http://www.springframework.org/schema/tx)"
xmlns:util="[http://www.springframework.org/schema/util](http://www.springframework.org/schema/util)" xmlns:task="[http://www.springframework.org/schema/task](http://www.springframework.org/schema/task)" xsi:schemaLocation="
[http://www.springframework.org/schema/beans](http://www.springframework.org/schema/beans) [http://www.springframework.org/schema/beans/spring-beans-4.0.xsd](http://www.springframework.org/schema/beans/spring-beans-4.0.xsd)
[http://www.springframework.org/schema/context](http://www.springframework.org/schema/context) [http://www.springframework.org/schema/context/spring-context-4.0.xsd](http://www.springframework.org/schema/context/spring-context-4.0.xsd)
[http://www.springframework.org/schema/jdbc](http://www.springframework.org/schema/jdbc) [http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd](http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd)
[http://www.springframework.org/schema/jee](http://www.springframework.org/schema/jee) [http://www.springframework.org/schema/jee/spring-jee-4.0.xsd](http://www.springframework.org/schema/jee/spring-jee-4.0.xsd)
[http://www.springframework.org/schema/tx](http://www.springframework.org/schema/tx) [http://www.springframework.org/schema/tx/spring-tx-4.0.xsd](http://www.springframework.org/schema/tx/spring-tx-4.0.xsd)
[http://www.springframework.org/schema/util](http://www.springframework.org/schema/util) [http://www.springframework.org/schema/util/spring-util-4.0.xsd](http://www.springframework.org/schema/util/spring-util-4.0.xsd)
[http://www.springframework.org/schema/task](http://www.springframework.org/schema/task) [http://www.springframework.org/schema/task/spring-task-4.0.xsd](http://www.springframework.org/schema/task/spring-task-4.0.xsd)" default-lazy-init="false”>
<context:component-scan base-package="com.xxx.demo"/>
</beans>
- 使用@Import引入其他配置类
@Configuration
@ImportResource("classpath:applicationContext-configuration.xml")
@Import(TestConfiguration.class)
public class WebConfig {
}
通过上面这种方式可以在一个配置类中引入其他配置类或者配置文件
总结
简单介绍了几个配置类中常用注解的使用方法
- 单独使用@Configuration注解在类上
- @Configuration注解类+@Bean注解方法
- @Configuration注解类+ @ComponentScan注解类
- 使用@Import引入其他配置类
网友评论