zoukankan      html  css  js  c++  java
  • spring框架中的@Import注解

    转自:https://www.cnblogs.com/hfultrastrong/p/8621450.html

    Spring框架中的@Import注解

    在之前的文章中,作者介绍了Spring JavaConfig. 这是除了使用传统的XML文件之外,spring带来的新的选择。同样作者列出了作为Java Config一部分的annotations.如果你是spring的新手,这里也有大量的关于springspring 4的资料索引。

    在列表中,@Import 是被用来整合所有在@Configuration注解中定义的bean配置。这其实很像我们将多个XML配置文件导入到单个文件的情形。@Import注解实现了相同的功能。本文会介绍使用@Import注解来导入spring工程中的JavaConfig文件.

    在下面的例子中,我创建了两个配置文件,然后导入到主配置文件中。最后使用主配置文件来创建context.

    代码

    Car.java
    package javabeat.net.basic;
    public interface Car {
        public void print();
    }
    Toyota.java
    
    package javabeat.net.basic;
    import org.springframework.stereotype.Component;
    @Component
    public class Toyota implements Car{
        public void print(){
            System.out.println("I am Toyota");
        }
    }
    Volkswagen.java
    package javabeat.net.basic;
    import org.springframework.stereotype.Component;
    @Component
    public class Volkswagen implements Car{
        public void print(){
            System.out.println("I am Volkswagen");
        }
    }
    JavaConfigA.java
    
    package javabeat.net.basic;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class JavaConfigA {
        @Bean(name="volkswagen")
        public Car getVolkswagen(){
            return new Volkswagen();
        }
    }
    JavaConfigB.java
    
    package javabeat.net.basic;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class JavaConfigB {
        @Bean(name="toyota")
        public Car getToyota(){
            return new Toyota();
        }
    }
    ParentConfig.java
    
    package javabeat.net.basic;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    
    @Configuration
    @Import({JavaConfigA.class,JavaConfigB.class})
    public class ParentConfig {
        //Any other bean definitions
    }
    ContextLoader.java
    
    package javabeat.net.basic;
    
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class ContextLoader {
        public static void main (String args[]){
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ParentConfig.class);
            Car car = (Toyota)context.getBean("toyota");
            car.print();
            car = (Volkswagen)context.getBean("volkswagen");
            car.print();
            context.close();
        }
    }

    程序执行输出
    I am Toyata
    I am Volkswagen

    总结

    本文作者介绍了@Import注解的使用。这个注解帮助我们将多个配置文件(可能是按功能分,或是按业务分)导入到单个主配置中,以避免将所有配置写在一个配置中。

  • 相关阅读:
    分布式事务的MQ实现
    zipkin 介绍入门
    线程5问?
    微服务分布式系统架构,转载,备份
    微服务,分布式架构
    史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!
    Tomcat优化
    windows 下安装kafka
    经典台词
    分布式锁3种实现
  • 原文地址:https://www.cnblogs.com/sharpest/p/7991695.html
Copyright © 2011-2022 走看看