Spring小知识

Spring课程

1.在bean的xml配置文件中,如果希望一个class指向一个内部类,可以使用$符号;

例如:com.qunar.campus.UserServiceImpl$FindService,表示UserServiceImpl的内部类FindService;

2.<scope>标签的含义,常用的有

singleton:  表示该类的实例化,在同一个Spring Ioc容器中只有一个,其它地方再次实例化该类,获得到的是同一个对象.类似于单例模式

prototype:  表示该类的实例化在一个Spring Ioc容器中可以是多个.其它地方每次实例化该类,得到的都不是同一个类;

注意:

当A(单例)依赖B(非单例), B依赖C(非单例)时,在整个实例化的链条中会使得A,B,C都成为单例存在一份.当然这里说的存在一份只是说A只有一份,A中的B和C只存在一份.当单单只实例化一个B或C时,B,C可以是多个的.

非单例在实际的使用场景下比较少。我们往往使用单例模式。这就要求Bean对象严格的线程安全。

3.@Resource标签的匹配顺序:优先匹配名字(name/id),其次匹配类型。

4.Sping中的callback有init和destroy等.init是在一个类被实例化以后,调用的方法.destroy是在一个对象被销毁以前所调用的方法.

定义init和destroy  callback方法有三种方式:

(1)定义该类时实现InitializingBean和DisposableBean接口.分别重写afterPropertiesSet()和destroy()方法;

(2)定义该类时,利用注解@ PostConstruct 和 @ PreDestroy标记相应的方法;

(3)在bean的xml配置中利用init-method和destroy-method指定相应的方法名;

注意:

当这三种方式全部实现时,它们的调用顺序为(2)(1)(3)

原文地址:https://www.cnblogs.com/userrain/p/5321503.html