gpt4 book ai didi

Spring @Import注解示例

转载 作者:知者 更新时间:2024-03-12 12:34:22 25 4
gpt4 key购买 nike

在这篇文章中,我们将结合实例讨论如何使用Spring @Import注解。

@Import 注解概述

  • @Import注解表示要导入一个或多个@Configuration类。
  • @在导入的@Configuration类中声明的Bean定义应该通过使用@Autowired注入来访问。要么Bean本身可以被自动连接,要么声明Bean的配置类实例可以被自动连接。
  • @Import注解可以在类级别上声明,也可以作为元注解。
    下图显示了@Import注解的一个内部实现。

如果需要导入XML或其他非@Configuration的bean定义资源,请使用@ImportResource注解代替。例如,如果你想加载config.properties文件,那么你可以使用@ImportResource注解来加载各自的属性文件。

在基于Spring XML的配置中,我们使用一个**<import />**元素来加载多个Spring Bean配置文件。 
例如。

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

 <import resource="common/spring-common.xml"/>
        <import resource="dao/spring-dao.xml"/>
        <import resource="beans/spring-beans.xml"/>
 
</beans>

Spring @Import注解示例

Spring提供了另一种@Import注解,允许从另一个配置类中加载@Bean定义。

@Configuration
public class ConfigA {

    @Bean
    public A a() {
        return new A();
    }
}

@Configuration
@Import(ConfigA.class)
public class ConfigB {

    @Bean
    public B b() {
        return new B();
    }
}

现在,在实例化上下文时不需要同时指定ConfigAclass和ConfigBclass,只需要明确提供e1d9d1即可。

public static void main(String[] args) {
    ApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigB.class);

    // now both beans A and B will be available...
    A a = ctx.getBean(A.class);
    B b = ctx.getBean(B.class);
}

加载多个配置类文件示例

@Import注解也可以用来从多个配置类文件中加载@Bean的。

@Configuration
public class ConfigA {

    @Bean
    public A a() {
        return new A();
    }
}

@Configuration
public class ConfigB {

    @Bean
    public B b() {
        return new B();
    }
}

@Configuration
public class ConfigC {

    @Bean
    public C c() {
        return new C();
    }
}

@Configuration
@Import(value = {ConfigA.class, ConfigB.class, ConfigC.class})
public class ConfigD {

    @Bean
    public D d() {
        return new D();
    }
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com