Spring实战系列-第三章 高级装配

  1. 环境与Profile

spring.profiles.default

spring.profiles.active

  1. 设置上述两参数的方法

作为DispatcherServlet的初始化参数

作为Web应用的上下文参数

作为JNDI条目

作为环境变量

作为JVM的系统属性

在继承测试类上,使用@ActiveProfiles注解设置

在properties文件中设置

  1. 条件化配置

@Conditional

@Profile

ProfileCondition

  1. 自动装配的歧义性
  1. 只针对注入时采用的是接口,而该接口有多个实现时会出现该情况;如果注册的对象不是接口形式,而是类,默认注入是的属性名为bean name去容器中查找,如果没找到,则按类型查找,如果有多个实现,则会报异常;如果找到了对应的bean,则即使该类有多个实现,也不会报异常;
  2. 解决办法:

@Primary

@Qualifier

   3)自定义注解

  1. Bean的作用域
  1. 单例是无状态的
  2. 但有时我们使用的类是易变的,他们会保持一些状态,重用是不安全的,因为对象会被污染,重用的时候会出现意想不到问题。
  3. 作用域包括:
  1. 单例:singleton
  2. 原型:prototype
  3. 会话:session
  4. 请求:request
  1. ScopedProxyMode.INTERFACES

WebApplicationContext.SCOPE_SESSION/ SCOPE_REQUEST/ SCOPE_APPLICATION

ConfigurableBeanFactory. SCOPE_SINGLETON/SCOPE_PROTOTYPE

  1. 运行时注入:
  1. 当讨论依赖注入的时候,我们通常所讨论的是将一个bean引用注入到另一个bean的属性或构造器参数中,它通常来讲指的是将一个对象与另一个对象进行关联。

但bean装配的另外一个方面指的是将一个值注入到bean的属性或者构造器参数中。

  1. 属性占位符:${xxx}
  2. SpEL:#{xxx}

猜你喜欢

转载自blog.csdn.net/qq_28060549/article/details/88626202