美文网首页程序员
spring基础知识回顾

spring基础知识回顾

作者: 每天学点编程 | 来源:发表于2017-08-16 07:34 被阅读82次

    使用java代码配置的基本格式

    如果不配置bean的名字,默认是方法名。

    可以使用如下格式指定bean的名字:

    使用工厂Bean创建bean

    Runnable的工厂bean:

    配置的是RunnableFactoryBean

    看看怎么使用:

    获取RunnableFactoryBean创建的Runnable的bean:

    如果需要获取RunnableFactoryBean工厂bean本身:

    不需要实现FactoryBean如何实现工厂bean

    下面是CatFactory,可以看到该工厂没有实现任何接口,这样就跟spring解耦了:

    如何配置:


    首先需要创建CatFactory工厂本身,然后由于自动装配,使用该工厂去创建Cat

    bean的Scope

    默认bean都是单例,如果需要每次获取都创建一个新的bean,可以进行如上配置。

    bean创建之后和销毁之前需要进行定制——实现接口


    上面实现了两个接口InitializingBean,DisposableBean

    bean创建之后和销毁之前需要进行定制——不实现接口

    只是单纯的一个java类,注意@Component,由于我使用的是java代码配置的方式,我不是使用扫描的方式,所以对于我来说是没有任何作用的。


    使用@BeaninitMethod,destroyMethod

    bean创建之后和销毁之前需要进行定制——不实现接口使用注解

    下面使用了@PostConstruct@PreDestroy注解,请注意为什么@Component是无效的,而@PostConstruct@PreDestroy是有效的:

    下面同样是java配置生成bean的方法:

    以上代码是如何组织起来的

    如果是在java代码中配置,则全部都是写在MyConfig该类中。而在AnnotationConfigApplicationContext如下书写:

    之前提到的@Component配置无效,怎么让它生效呢?

    把加了@Component注解的类也放到AnnotationConfigApplicationContext参数中。
    当然也可以采用扫描的方式。

    spring提供的四种bean注解

    这四种bean的作用都是一样的,区别只是语义上的:

    @Component

    @Repository放在Dao层:

    @Service放在服务层上:

    @Controller注解放在控制器上:

    装配的三种方式


    前面两种都spring自带的,不用引入新的jar包。
    但是最后一种是java某个标准的,需要引入新包:

    实例化AnnotationConfigApplicationContext的几种方式

    传递需要扫描的包:


    传递java配置类:


    可以在java配置类中设置扫描的包

    上面配置了排除,请注意实例化AnnotationConfigApplicationContext时候参数是PackageScan.class。但是在com.test.spring4.spring4_test_1包下还有MyConfig类:

    需要注意PackageScan.class中配置的排除,排除不了MyConfig中配置的。

    相关文章

      网友评论

        本文标题:spring基础知识回顾

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