zoukankan      html  css  js  c++  java
  • Bean相关

    Bean容器初始化:

    本地文件是绝对路径,classpath是相对路径。例子如下:

    Bean配置项:

    常用Bean的配置项:

    (1)id :在整个IOC容器中,这个bean的唯一标识

    (2)class :具体要实例化的某一类,与id对应

    (3)scope :bean的作用域

    (4)constructor-arg :构造器的参数

    (5)properties :某个类的属性

    (6)autowiring mode :自动装配模式

    (7)lazy-initialization mode :懒加载模式

    (8)initialization/destruction method :初始化和销毁方法

    从bean容器中要得到某一个实例,有两种方式,一种是通过id获取,一种是通过类型,也就是class获取。

    Bean的作用域:

    图解:

    一个Bean容器:也就是在一个context中,而不是在两个context中去比较实例化对象。

    singleton :默认模式

    prototype :每次请求获取对象,容器都会创建一个新的实例返回,当不再使用这个对象时,自动被垃圾回收器回收,destroy不生效。

    global session :portlet主要用于应用的集成,例如,有OA系统,有HR系统,有财务系统,在一个企业内部,通常不会每个系统都去分别登录,而是做一个port,在这个port里,会把每个系统常用的功能都列在里面,这个port会和所有的系统做单点登录,登录这个port后,可以点击其中任意一个系统都可以登录,也就是在不同的系统中的所拥有的不同的session的作用范围。

    判断是否是同一个实例的方法,查看hashCode,测试方法可如下:

    详细解析singleton:

    Bean的生命周期:

    Bean的生命周期:

    (1)定义:也就是xml配置文件中配置的bean

    (2)初始化:也就是IOC容器在加载的时候,初始化,生成bean的实例

    (3)使用:开发中使用某一个bean的实例

    (4)销毁:在bean容器停止的时候,销毁这个容器创建的所有实例

    针对某一个bean的方法:

      初始化的两种方式:

      (1)实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法

      (2)配置init-method

      销毁的两种方式:

      (1)实现org.springframework.beans.factory.DisposableBean接口,覆盖destroy方法

      (2)配置destroy-method

    (2)以配置的方式实现,xml配置如下:

    具体bean实现:

    (1)实现接口的方式,xml正常配置即可,不用配置init和destroy,只需要在具体bean实现中实现相关接口即可,相关代码如下:

    配置全局默认初始化、销毁方法:

    xml配置文件如下:

    具体bean的实现:

    总结:

    当同时配置以上三种初始化和销毁方式时,实现接口的初始化方法要最先执行,其次是内部配置的初始化方式,然而全局默认的配置方式并不会执行,也就是会被覆盖。而当配置全局默认的配饰方式时,bean具体实现中可以不用实现相对应的初始化和销毁方法,而内配配置的初始化方式,其初始化和销毁方法不能省去。

    Aware接口:

    spring中提供了一些以aware结尾的接口,实现了aware接口的bean在被初始化之后,可以获取相应资源,所谓资源指以aware结尾的接口,例如beanNameAware,它可获取的相关资源就是beanName相关的;

    通过aware接口,可以对spring相应资源进行操作(需慎重,因为获取到的资源可能是IOC容器中非常核心的内容,例如得到了ApplicationContext,执行了它的destroy方法);

    为对spring进行简单的扩展提供了方便的入口;

    举例:

    ApplicationContextAware:它会向实现了这个接口的bean提供ApplicationContext,并且实现了这个接口的bean必须配置到spring的配置文件中,并且由spring的容器去加载

    BeanNameAware:它会提供有关BeanName定义的内容

    ApplicationEventPublisherAware:用于事件的发布

    BeanClassLoaderAware:找到相关的类加载器

    Bean的自动装配---xml配置autowire实现:

    前面介绍了Spring注入的两种方式:设值注入和构造器注入。

    这里利用Bean的自动装配可以省略配置文件中的很多细节。

    具体配置文件三种方式可如下进行:

    而其具体的bean的实现跟正常情况下一致即可。

  • 相关阅读:
    平安银行Java面试-社招-五面(2019/09)
    OPPO-Java面试-社招-一面(2019/07)
    记录一次SpringBoot实现AOP编程
    Java-Long类型精度丢失问题
    微众银行Java面试-社招-一面(2019/07)
    Java-根据经纬度计算距离(百度地图距离)
    git 常用命令
    linux命令之文件、文件夹操作
    j2ee爬坑行之二 servlet
    j2ee爬坑行之一:web容器
  • 原文地址:https://www.cnblogs.com/cing/p/7413253.html
Copyright © 2011-2022 走看看