@ImportResource in spring imports application xml in configuration file which is using @Configuration. All the beans and other properties defined in application xml can be imported. @ImportResource helps when we are moving our application from old style of defining bean in xml to modern way of defining bean in java file with the help of @Configuration.
In the below example we have one bean defined in xml and one bean defined in java file. We will import the xml with help of @ImportResource and will fetch both beans.
app-conf.xmlAppConfig.java
package com.concretepage;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.ImportResource;@Configuration@ImportResource("classpath:/app-conf.xml")public class AppConfig { @Bean(name="entitlement") public Entitlement entitlement(){ Entitlement ent= new Entitlement(); ent.setName("Entitlement"); ent.setTime(20); return ent; }}
Entitlement.java
package com.concretepage;public class Entitlement { private String name; private int time; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getTime() { return time; } public void setTime(int time) { this.time = time; }}
Subscription.java
package com.concretepage;public class Subscription { private String name; private String type; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
AppTest.java
package com.concretepage;import java.sql.SQLException;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class AppTest { public static void main(String[] args) throws SQLException { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.register(AppConfig.class); ctx.refresh(); Entitlement ent= (Entitlement)ctx.getBean("entitlement"); System.out.println(ent.getName()); System.out.println(ent.getTime()); Subscription sub= (Subscription)ctx.getBean("subscription"); System.out.println(sub.getName()); System.out.println(sub.getType()); }}
Output
Entitlement20Subscription Weekly
参考文献:
【1】http://www.concretepage.com/spring/example_importresource_spring