美文网首页我爱编程
Session 2 Spring 装配bean的三种方式(注解,

Session 2 Spring 装配bean的三种方式(注解,

作者: 5afbde9dd015 | 来源:发表于2018-06-10 11:39 被阅读0次

装配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就说这些了。

相关文章

网友评论

    本文标题:Session 2 Spring 装配bean的三种方式(注解,

    本文链接:https://www.haomeiwen.com/subject/mwqteftx.html