zoukankan      html  css  js  c++  java
  • spring @import和@importResource

    @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

  • 相关阅读:
    [九度][何海涛] 顺时针打印矩阵
    [何海涛] 求二元查找树的镜像
    [九度][何海涛] 二叉树中和为某一值的路径
    [面试] 水杯题实现
    [九度][何海涛] 最小的K个数
    [九度][何海涛] 字符串的排序
    如何扩展Orchard
    IoC容器Autofac(3) 理解Autofac原理,我实现的部分Autofac功能(附源码)
    使用PrivateObject帮助单元测试
    Nuget如何自动下载依赖DLL引用
  • 原文地址:https://www.cnblogs.com/davidwang456/p/6019610.html
Copyright © 2011-2022 走看看