Spring 3 JavaConfig @Import example

来源:互联网 发布:编程语言排行榜2017 8 编辑:程序博客网 时间:2024/05/17 12:49

Normally, you will split a large Spring XML bean files into multiple small files, group by module or category, to make things more maintainable and modular. For example,

<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-2.5.xsd">    <import resource="config/customer.xml"/>        <import resource="config/scheduler.xml"/></beans>

In Spring3 JavaConfig, the equivalent functionality is @Import.

package com.mkyong.config;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Import;@Configuration@Import({ CustomerConfig.class, SchedulerConfig.class })public class AppConfig {}

@Import Example

See a full example of using JavaConfig @Import.

1. Directory Structure

Directory structure of this example.
directory structure of this example

2. Spring Beans

Two simple Spring beans.

File : CustomerBo.java

package com.mkyong.core;public class CustomerBo {    public void printMsg(String msg) {        System.out.println("CustomerBo : " + msg);    }}

File : SchedulerBo.java

package com.mkyong.core;public class SchedulerBo {    public void printMsg(String msg) {        System.out.println("SchedulerBo : " + msg);    }}

3. @Configuration example

Now, use JavaConfig @Configuration to declare above beans.

File : CustomerConfig.java

package com.mkyong.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.mkyong.core.CustomerBo;@Configurationpublic class CustomerConfig {    @Bean(name="customer")    public CustomerBo customerBo(){        return new CustomerBo();    }}

File : SchedulerConfig.java

package com.mkyong.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.mkyong.core.SchedulerBo;@Configurationpublic class SchedulerConfig {    @Bean(name="scheduler")    public SchedulerBo suchedulerBo(){        return new SchedulerBo();    }}

4. @Import example

Use @Import to load multiple configuration files.

File : AppConfig.java

package com.mkyong.config;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Import;@Configuration@Import({ CustomerConfig.class, SchedulerConfig.class })public class AppConfig {}

5. Run it

Load the main configuration file , and test it.

package com.mkyong.core;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import com.mkyong.config.AppConfig;public class App {    public static void main(String[] args) {        ApplicationContext context = new AnnotationConfigApplicationContext(                AppConfig.class);        CustomerBo customer = (CustomerBo) context.getBean("customer");        customer.printMsg("Hello 1");        SchedulerBo scheduler = (SchedulerBo) context.getBean("scheduler");        scheduler.printMsg("Hello 2");    }}

Output

CustomerBo : Hello 1SchedulerBo : Hello 2
0 0