2.2通过Java代码装配bean

Posted Java全栈从0到1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.2通过Java代码装配bean相关的知识,希望对你有一定的参考价值。

通过Java代码装配bean

例如,需要将第三方库的组件加载到你的应用中,此时无法给他的类上添加@Component和@Autowired注解,此时不能使用自动化装配了。

这种情况下,就必须使用显式装配的形式,可以选择Java代码装配或Xml装配

建议:显式配置是优先使用JavaConfig装配,因为他强大、类型安全且对重构友好;因为他和业务代码无关,应放到单独的包中

@Configuration

告诉Spring,这是一个Spring配置类,用来配置Spring应用上下文如何配置bean

@Bean

创建一个方法,用来产生类的实例,并告诉Spring,这个实例要注册为Spring应用上下文中的bean

package soundsystem;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CDPlayerConfig {
    @Bean
    public CompactDisc sgtPeppers() {
        return new SgtPeppers();
    }
    @Bean
    public CDPlayer cdPlayer1() {
        return new CDPlayer(sgtPeppers());
    }
    @Bean
    public CDPlayer cdPlayer2(CompactDisc compactDisc) {
        return new CDPlayer(compactDisc);
    }
}

首先,使用new SgtPeppers()的实例,为CompactDisc类型创建一个bean

cdPlayer1中,通过直接调用SgtPeppers()方法获取实例,看似每次调用cdPlayer1,都会产生一个新的CompactDisc实例,但实际上,因为SgtPeppers()方法添加了@bean备注,Spring会拦截其调用,如果已创建bean则直接返回bean,不会重新创建。

cdPlayer2中,给这个方法添加了@Bean注解,Spring会在调用的时候为参数找到对应类型的实例,自动注入

其中cdPlayer2的方式更符合实际代码的运行,建议使用这种方式,方便理解。

以上是关于2.2通过Java代码装配bean的主要内容,如果未能解决你的问题,请参考以下文章

第2章—装配Bean—通过java代码装配bean

Spring装配bean--02通过Java代码装配bean

通过Java代码装配Bean

Spring学习系列 通过Java代码装配Bean

Sping实战之通过JAVA代码装配Bean

Spring5 Java代码装配Bean