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

  • 相关阅读:
    闲话: 恭喜园子里的MVP一下, 同时问所有奋斗在技术领域的兄弟过节好~
    随便说两句: 表设计兼一些设计分析的讨论
    是他妈傻子写的么?
    Utility Wish List
    我终于有个偶像了
    也论标准: 统一是啥好事情?
    linux 编程学习笔记(1)搭建c(c++)开发环境
    Immutable Collections(2)ImmutableList<T>实现原理.(上)
    托管代码的进程注入&CLR宿主
    .NET安全揭秘系列博文索引
  • 原文地址:https://www.cnblogs.com/davidwang456/p/6019610.html
Copyright © 2011-2022 走看看