Session 2 Spring 装配bean的三种方式(注解,xml,自动装配)

装配bean的概念

spring到底做了啥?

spring容器负责创建应用程序中的bean,并通过di来协调bean相互之间的关系,所以spring提供了三种方式:
1:通过xml显示配置,这种方式在以前的编码中经常用到,但是现在已经渐渐的被第二种方式所取代了,所以本篇文章我们就不讨论这种配置方式了。因为,我也忘了是如何配置的了。
2:在JAVA中显示配置,这是现在常用的一种装配bean的方式,相比于xml她会更加的简洁并且易读。
3:隐式的bean发现机制和自动装配

那现在就让我们先来聊一聊第三种方式,spring自动装配
spring通过两个角度来实现自动化配置
1、组件扫描(component scanning)spring会自动发现应用上下文中的所创建的bean并将他们加载进来。
2、自动装配(autowiring)spring自动满足bean之间的依赖关系。

接下来我们用例子来说明,首先我们先来创建两个东西,一个是游戏机,一个是游戏光盘

/**
 * 这是一个游戏光盘的实现
 */
@Component
public class GameDisc implements Disc{
    @Override
    public void play() {
        System.out.println("来一起玩真三国无双吧");
    }
}


@Configuration
@ComponentScan
public class DiscConfig {
}

可以看出,我们在GameDisc上加了@Component注解,这个注解的意思就是将这个类声明成一个组件,Spring就可以自动装配这个Bean,我们在DiscConfig上加了一个@ComponentScan注解表示在Spring中开启了组件扫描,就可以扫描到这个GameDisc的Bean了。这就是Spring的自动装配机制。

接下来我们来看看显示的JAVA配置是如何实现的。
现在我们把config上面的@ComponentScan去掉,这样他就不能自动扫描bean了,这个时候再测试的时候就会报出BeanCreationException。这样的话我们就需要自己手动配置这个bean了

@Configuration
public class DiscConfig {
    @Bean
    public Disc gameDisc(){
        return  new GameDisc();
    }
}

默认状态Spring创建的bean是单例的,也就是说如果这样

@Configuration
public class DiscConfig {
    @Bean
    public Disc gameDisc(){
        return  new GameDisc();
    }

 @Bean
    public Disc anotherGameDisc(){
        return  new GameDisc();
    }
}

这种情况如果第一次已经创建了这个bean的话,第二次就不会再创建这个bean了,当然也可以手动调节为多例的。所以一般情况下我们没必要去创建第二个相同的bean。
(tips @Bean可以以任何JAVA的形式去创建bean,构造器和setter等,这里存在的可能性只是受到了java语言的限制)

关于xml的配置方式就不说了,懒得看了。。。。多说一句,一般来说能用自动配置尽量用自动配置,毕竟比较方便,而用到javaconfig主要是因为比如引入了其他的jar,但是它的类上面又没有@Component所以只能自己配置了。
关于Spring装配bean就说这些了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,120评论 19 139
  • 1.1 spring IoC容器和beans的简介 Spring 框架的最核心基础的功能是IoC(控制反转)容器,...
    simoscode阅读 11,710评论 2 22
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,151评论 6 342
  • 本章内容: 声明Bean 构造器注入和Setter方法注入 装配Bean 控制bean的创建和销毁 任何一个成功的...
    谢随安阅读 5,595评论 0 9
  • 2.1 Spring配置的可选方案 Spring提供了三种主要的装配机制: 1)在XML中进行显示配置。2)在ja...
    如一诺然阅读 3,430评论 0 1

友情链接更多精彩内容