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;
 
@Configuration
public 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;
 
@Configuration
public 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 1
SchedulerBo : Hello 2

Download Source Code

References

  1. Spring3 @Configuration example
  2. Spring XML import example
Tags :
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider making a donation to this charity, thanks.

Related Posts

Popular Posts