- 环境与Profile
spring.profiles.default
spring.profiles.active
- 设置上述两参数的方法
作为DispatcherServlet的初始化参数
作为Web应用的上下文参数
作为JNDI条目
作为环境变量
作为JVM的系统属性
在继承测试类上,使用@ActiveProfiles注解设置
在properties文件中设置
- 条件化配置
@Conditional
@Profile
ProfileCondition
- 自动装配的歧义性
- 只针对注入时采用的是接口,而该接口有多个实现时会出现该情况;如果注册的对象不是接口形式,而是类,默认注入是的属性名为bean name去容器中查找,如果没找到,则按类型查找,如果有多个实现,则会报异常;如果找到了对应的bean,则即使该类有多个实现,也不会报异常;
- 解决办法:
@Primary
@Qualifier
3)自定义注解
- Bean的作用域
- 单例是无状态的
- 但有时我们使用的类是易变的,他们会保持一些状态,重用是不安全的,因为对象会被污染,重用的时候会出现意想不到问题。
- 作用域包括:
- 单例:singleton
- 原型:prototype
- 会话:session
- 请求:request
- ScopedProxyMode.INTERFACES
WebApplicationContext.SCOPE_SESSION/ SCOPE_REQUEST/ SCOPE_APPLICATION
ConfigurableBeanFactory. SCOPE_SINGLETON/SCOPE_PROTOTYPE
- 运行时注入:
- 当讨论依赖注入的时候,我们通常所讨论的是将一个bean引用注入到另一个bean的属性或构造器参数中,它通常来讲指的是将一个对象与另一个对象进行关联。
但bean装配的另外一个方面指的是将一个值注入到bean的属性或者构造器参数中。
- 属性占位符:${xxx}
- SpEL:#{xxx}