@Configuration
- proxyBeanMethods属性 – Full 全模式,proxyBeanMethods=true (默认):使用代理,也就是说该配置类会被代理,直接从IOC容器之中取得bean对象,不会创建新的对象。SpringBoot总会检查这个组件是否在容器中是否存在,保持组件的单实例。
– Lite 轻量级模式,proxyBeanMethods=false:每次调用@Bean标注的方法获取到的对象是一个新的bean对象,和之前从IOC容器中获取的不一样,SpringBoot会跳过检查这个组件是否在容器中是否存在,保持组件的多实例。
1
2
// proxyBeanMethods属性
@ConfigurationProperties
获取配置文件中的熟悉绑定到bean
1
2
3
4
5
6
7
8
9
10
11
12
13
@Configuration
@ConfigurationProperties(prefix = "mail")
public class ConfigProperties {
private String hostName;
private int port;
private String from;
// standard getters and setters
}
// 同@Value("mail.host-name")
// 同@Value("mail.port")
// 同@Value("mail.from")
@RestControllerAdvice
拦截有@RequestMapping注解的方法 配合使用的注解 @ExceptionHandler、@InitBinder、@ModelAttribute
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@ControllerAdvice
public class GlobalController{
//(1)全局数据绑定
//应用到所有@RequestMapping注解方法
//此处将键值对添加到全局,注解了@RequestMapping的方法都可以获得此键值对
@ModelAttribute
public void addUser(Model model) {
model.addAttribute("msg", "此处将键值对添加到全局,注解了@RequestMapping的方法都可以获得此键值对");
}
//(2)全局数据预处理
//应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器
//用来设置WebDataBinder
@InitBinder("user")
public void initBinder(WebDataBinder binder) {
}
// (3)全局异常处理
//应用到所有@RequestMapping注解的方法,在其抛出Exception异常时执行
//定义全局异常处理,value属性可以过滤拦截指定异常,此处拦截所有的Exception
@ExceptionHandler(Exception.class)
public String handleException(Exception e) {
return "error";
}
}
@ConditionalOn———-
根据当前环境或者容器情况来动态注入bean,要配合@Bean使用
- @ConditionalOnMissingBean 判断当前需要注入Spring容器中的bean的实现类是否已经含有,有的话不注入,没有就注入
- @ConditionalOnBean 判断当前需要注册的bean的实现类否被spring管理,如果被管理则注入,反之不注入 ~~~java
~~~