spring的配置方式由最早的xml配置,到xml加注解的配置方式(java ee5.0引入一个非常重要的特性--annotation)。随着spring大量使用xml配置被诟病,spring4.0推出javaConfig的配置方式。也就是java代码+注解来替代原来的xml+注解的配置方式。我个人喜欢xml+注解的配置方式,更直观。
下面举几个例子来说明javaConfig的配置方式:
一. spring ioc中的bean
xml配置方式中的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
//这里就是往容器中生成一个id为button的bean 当然也可以打开注解扫描使用@Service、@Component等注解来配置
<bean id="button" class="javax.swing.JButton">
<constructor-arg value="Hello World" />
</bean>
</beans>
javaConfig配置方式的java类
//这个注解表明这是配置类 相当于spring配置文件
@Configuration
public class MigratedConfiguration {
//这个注解表示注册一个bean对象 注解name值即它的id 方法返回值就是bean对象 如果注解没有name值则方法名就是id
@Bean
public JButton button() {
return new JButton("Hello World");
}
}
二、多配置文件加载
xml方式
在spring配置文件中使用<import>节点加载另一个配置文件
javaConfig方式
//在配置类中使用@Import注释引入另一个配置类当然下面的CustomerConfig.class也得是配置类
@Configuration
@Import({ CustomerConfig.class, SchedulerConfig.class })
public class AppConfig {
}
三.扫描注解bean
xml方式
//开启annotation
<context:annotation-config/>
//扫描这个包下的annotation
<context:component-scan base-package="com.test"/>
javaConfig方式
//这里就包含了<context:annotation-config/>的功能
@ComponentScan(basePackages={"com.test"})
@Configuration
@Import({ CustomerConfig.class, SchedulerConfig.class })
public class AppConfig {
}
还有像是@PropertySource加载配置文件,@EnableAspectAutoProxy@Aspect使用aspect切面,@EnableScheduling@Scheduled使用计划任务等等注解
另外在Web环境中使用javaConfig需要在web.xml中加入如下代码
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.packtpub.learnvaadin.springintegration.SpringIntegrationConfiguration</param-value>
</context-param>
其实了解javaConfig主要是为了springboot。。