【Spring】注解备忘录

【Spring】注解备忘录

Posted by thrfox on May 25, 2022

@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

~~~