java spring config_Spring重温(二)--Spring JavaConfig
1.從Spring?3起,JavaConfig功能已經(jīng)包含在Spring核心模塊,它允許開發(fā)者將bean定義和在Spring配置XML文件到Java類中。但是,仍然允許使用經(jīng)典的XML方式來定義bean和配置,JavaConfig是另一種替代解決方案。所以,在Spring3以后的版本中,支持xml方式和javaConfig兩種Spring配置方式。
我們通過XML方式定義:
等效于:
packagecom.yiibai.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importcom.yiibai.hello.HelloWorld;importcom.yiibai.hello.impl.HelloWorldImpl;
@Configurationpublic classAppConfig {
@Bean(name="helloBean")publicHelloWorld helloWorld() {return newHelloWorldImpl();
}
}
2.小例子:
a.一個(gè)簡單的bean
packagecom.spring;public interfaceHelloeorld {voidprintHelloWorld(String msg);
}
packagecom.spring;public class HelloworldImpl implementsHelloeorld{
@Overridepublic voidprintHelloWorld(String msg) {
System.out.println("Hello : " +msg);
}
}
b.javaConfig注解:使用 @Configuration 注釋告訴 Spring,這是核心的 Spring 配置文件,并通過 @Bean 定義 bean
packagecom.spring;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/*使用 @Configuration 注釋告訴 Spring,這是核心的 Spring 配置文件,
并通過 @Bean 定義 bean*/@Configurationpublic classTestConfig {
@Bean(name="helloeorld")publicHelloeorld getHello(){return newHelloworldImpl();
}
}
c.測試main方法:
packagecom.spring;importorg.springframework.context.ApplicationContext;importorg.springframework.context.annotation.AnnotationConfigApplicationContext;public classTestMain {public static voidmain(String[] args) {
ApplicationContext context= new AnnotationConfigApplicationContext(TestConfig.class);
Helloeorld obj= (Helloeorld) context.getBean("helloeorld");
obj.printHelloWorld("Spring Java Config");
}
}
3.@Import
在我們運(yùn)用傳統(tǒng)xml方式進(jìn)行配置Spring時(shí),可以通過如下方式加載多個(gè)配置文件:
在一個(gè)大的項(xiàng)目結(jié)構(gòu),Spring bean配置文件位于不同的文件夾以便于維護(hù)和模塊化。例如,Spring-Common.xml在common 文件夾中,Spring-Connection.xml 在connection文件夾,Spring-ModuleA.xml在ModuleA 文件夾等等。
你可以加載多個(gè)Spring bean的配置文件如下代碼中:
ApplicationContext context= new ClassPathXmlApplicationContext(new String[] {"Spring-Common.xml","Spring-Connection.xml","Spring-ModuleA.xml"});
把所有的 Spring XML 文件放入在項(xiàng)目類路徑中。
project-classpath/Spring-Common.xml
project-classpath/Spring-Connection.xml
project-classpath/Spring-ModuleA.xml
解決方法
以上方法是缺乏組織并且很容易出錯(cuò),更好的辦法應(yīng)組織所有的Spring bean 配置文件到一個(gè)XML文件。例如,創(chuàng)建一個(gè)Spring-All-Module.xml文件,并導(dǎo)入整個(gè)Spring bean的文件如下:
File : Spring-All-Module.xml
現(xiàn)在,可以加載一個(gè)這樣的 XML 文件:
ApplicationContext context= new ClassPathXmlApplicationContext(Spring-All-Module.xml);
將這個(gè)文件放入項(xiàng)目的類路徑。
project-classpath/Spring-All-Module.xml
以上方式等效于javaConfig的如下方式:
1.兩個(gè)簡單的Spring bean。
File One : CustomerBo.javapackagecom.yiibai.core;public classCustomerBo {public voidprintMsg(String msg) {
System.out.println("CustomerBo : " +msg);
}
}
File Two: SchedulerBo.javapackagecom.yiibai.core;public classSchedulerBo {public voidprintMsg(String msg) {
System.out.println("SchedulerBo : " +msg);
}
}2. @Configuration示例
現(xiàn)在,使用JavaConfig @Configuration聲明上述Bean類。
File One: CustomerConfig.javapackagecom.yiibai.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importcom.yiibai.core.CustomerBo;
@Configurationpublic classCustomerConfig {
@Bean(name="customer")publicCustomerBo customerBo(){return newCustomerBo();
}
}
File Two: SchedulerConfig.javapackagecom.yiibai.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importcom.yiibai.core.SchedulerBo;
@Configurationpublic classSchedulerConfig {
@Bean(name="scheduler")publicSchedulerBo suchedulerBo(){return newSchedulerBo();
}
}3. @Import示例
使用@Import加載多個(gè)配置文件。
File : AppConfig.javapackagecom.yiibai.config;importorg.springframework.context.annotation.Configuration;importorg.springframework.context.annotation.Import;
@Configuration
@Import({ CustomerConfig.class, SchedulerConfig.class})public classAppConfig {
}4. 執(zhí)行程序
加載主配置文件,并進(jìn)行測試。packagecom.yiibai.core;importorg.springframework.context.ApplicationContext;importorg.springframework.context.annotation.AnnotationConfigApplicationContext;importcom.yiibai.config.AppConfig;public classApp {public static voidmain(String[] args) {
ApplicationContext context= newAnnotationConfigApplicationContext(
AppConfig.class);
CustomerBo customer= (CustomerBo) context.getBean("customer");
customer.printMsg("Hello 11");
SchedulerBo scheduler= (SchedulerBo) context.getBean("scheduler");
scheduler.printMsg("Hello 22");
}
}
輸出結(jié)果
CustomerBo : Hello11SchedulerBo : Hello22
總結(jié):Spring有xml和javaConfig兩種配置方式,他們方式不同,但效果相同,可以根據(jù)自己的需要進(jìn)行選擇性配置。
總結(jié)
以上是生活随笔為你收集整理的java spring config_Spring重温(二)--Spring JavaConfig的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql matlab for循环嵌套
- 下一篇: java 格式化解析_java日期格式化