Spring3系列3-JavaConfig-1
从Spring3开始,加入了JavaConfig特性,JavaConfig特性允许开发者不必在Spring的xml配置文件中定义bean,可以在Java Class中通过注释配置bean。
当然,你仍然可以用经典的XML方法定义bean,JavaConfig只是另一个替代方案。
一、 环境
spring-framework-3.2.4.RELEASE
jdk1.7.0_11
Maven3.0.5
eclipse-jee-juno-SR2-win32
不必新建项目,仍然沿用之前的项目Spring3-Example(见“Spring3系列1-HelloWord例子”)
二、 编辑pom.xml引入依赖包CGLIB
要想使用JavaConfig特性,必须引入CGLIB包,引入后,才可以在Class配置bean(Class前加注释@Configuration表示是一个Spring配置类)
4.0.0
com.lei.demo
spring3-Example
0.0.1-SNAPSHOT
jar
spring3-Example
http://maven.apache.org
UTF-8
junit
junit
3.8.1
test
org.springframework
spring-core
3.2.4.RELEASE
org.springframework
spring-context
3.2.4.RELEASE
cglib
cglib
2.2.2
三、 编写几个Java Bean如下
接口IAnimal.java
packagecom.lei.demo.java_config;public interfaceIAnimal {public voidmakeSound();
}
Dog.java实现接口IAnimal
packagecom.lei.demo.java_config;public class Dog implementsIAnimal {public voidmakeSound() {
System.out.println("汪、汪、汪------");
}
}
Cat.java实现接口IAnimal
packagecom.lei.demo.java_config;public class Cat implementsIAnimal {public voidmakeSound() {
System.out.println("喵、喵、喵******");
}
}
四、 用JavaConfig特性配置Spring3
看一下xml配置bean和JavaConfig配置bean的不同。
Xml方法,配置定义bean格式类似如下。
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
JavaConfig方法,通过使用注释@Configuration告诉Spring,这个Class是Spring的核心配置文件,并且通过使用注释@Bean定义bean
packagecom.lei.demo.java_config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;
@Configurationpublic classAppConfig {
@Bean(name="animal")publicIAnimal getAnimal(){return newDog();
}
}
App.javar如下:
packagecom.lei.demo.java_config;importorg.springframework.context.ApplicationContext;importorg.springframework.context.annotation.AnnotationConfigApplicationContext;public classApp {private staticApplicationContext context;public static voidmain(String[] args) {
context= new AnnotationConfigApplicationContext(AppConfig.class);
IAnimal obj= (IAnimal) context.getBean("animal");
obj.makeSound();
}
}
五、 目录结构
六、 输出结果
运行App.java