@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.xml

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
     
    <bean id="subscription" class="com.concretepage.Subscription">
        <property name="name" value="Subscription"/>
        <property name="type" value="Weekly"/>
    </bean>
</beans>

AppConfig.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

Entitlement
20
Subscription
Weekly

 

参考文献:

【1】http://www.concretepage.com/spring/example_importresource_spring

posted on 2016-11-03 16:47  一天不进步,就是退步  阅读(1381)  评论(0编辑  收藏  举报