spring-boot 注解集合

Posted 小丑quan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-boot 注解集合相关的知识,希望对你有一定的参考价值。

@Configuration 

 

用于定义配置类,可替换XML配置文件,被注解的类内部包含一个或多个@Bean注解方法。可以被AnnotationConfigApplicationContext或者AnnotationConfigWebApplicationContext 进行扫描。用于构建bean定义以及初始化Spring容器。

 

ConditionalOnProperty注解

@ConditionalOnProperty(
    prefix = "spring.redis",
    name = {"enabled"},
    havingValue = "true",
    matchIfMissing = true
)

其中:

  prefix   是指配置文件中application.properties配置的前缀

  name    属性是从配置文件中读取的属性值

  havingValue 配置读取的属性值跟havingValue做比较,如果一样则返回true 否则返回false

        且,如果返回false那这个confications就不生效,返回true,那这个confication 就生效

  matchIfMissing   默认情况下matchIfMissing为false,也就是说如果未进行属性配置,则自动配置不生效。如果matchIfMissing为true,则表示如果没有对应的属性配置,则自动配置默认生效。

 

@EnableConfigurationProperties 注解

使使用 @ConfigurationProperties 注解的类生效。

 

如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component,那么在IOC容器中是
获取不到properties 配置文件转化的bean。说白了 @EnableConfigurationProperties 相当于把
使用 @ConfigurationProperties 的类进行了一次注入。 当@EnableConfigurationProperties注解应用到你的@Configuration时, 任何
被@ConfigurationProperties注解的beans将自动被Environment属性配置。
这种风格的配置特别适合与SpringApplication的外部YAML配置进行配合使用。

@ConfigurationProperties

使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方
法才可以,而使用@Value注解修饰的字段不需要提供set方法

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@Component
@ConfigurationProperties(prefix = "owner.somthing")
public class ControllerTest {
    private String  name;
    private int age;

    @RequestMapping("/owner")
    @ResponseBody
    public String  onwner(){
        return name+age;
    }
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "ControllerTest{" +
                "name=\'" + name + \'\\\'\' +
                ", age=" + age +
                \'}\';
    }
}

 

 

 

 

 

 

 @Autowired注解

可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。

required属性值可以为true( 默认值)和false。如果为true的话,没有匹配的类则抛出异常;
如果为false,则表示不是强制必须能够找到相应的类,无论是否注入成功,都不会抛错。

原理解析“

注解解析器:AutowiredAnnotationBeanPostProcessorSpring容器启动时,AutowiredAnnotationBeanPostProcessor被注册到容器;

扫描代码,如果带有@Autowired注解,则将依赖注入信息封装到InjectionMetadata中(见扫描过程);
创建bean时(实例化对象和初始化),会调用各种BeanPostProcessor对bean初始化,AutowiredAnnotationBeanPostProcessor负责将相关的依赖注入进来

@Resource

作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入

name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,
而使用type属性时则使用byType自动注入策略。
如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

 

@SuppressWarnings 注解

告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。

value -将由编译器在注释的元素中取消显示的警告集
@SuppressWarnings("unchecked")
  • 请注意,给定元素中抑制的一组警告是所有包含元素中抑制的警告的超集。 例如,如果您注释一个类来抑制一个警告并注释方法来抑制另一个警告,则两个警告将在该方法中被抑制。

 

value可能遇到的关键字:

关键字 用途
all to suppress all warnings
boxing  to suppress warnings relative to boxing/unboxing operations
cast to suppress warnings relative to cast operations
dep-ann to suppress warnings relative to deprecated annotation
deprecation to suppress warnings relative to deprecation
fallthrough  to suppress warnings relative to missing breaks in switch statements
finally  to suppress warnings relative to finally block that don’t return
hiding to suppress warnings relative to locals that hide variable
incomplete-switch  to suppress warnings relative to missing entries in a switch statement (enum case)
nls  to suppress warnings relative to non-nls string literals
null to suppress warnings relative to null analysis
rawtypes to suppress warnings relative to un-specific types when using generics on class params
restriction to suppress warnings relative to usage of discouraged or forbidden references
serial to suppress warnings relative to missing serialVersionUID field for a serializable class
static-access o suppress warnings relative to incorrect static access
synthetic-access   to suppress warnings relative to unoptimized access from inner classes
unchecked  to suppress warnings relative to unchecked operations
unqualified-field-access to suppress warnings relative to field access unqualified
unused to suppress warnings relative to unused code

 

@responseBody注解

的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。

 

@RequestParam注解

将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)


语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

 

@Intercepts
Mybatis拦截器实现拦截器,类上面必须添加@Intercepts注解,

@Signature,代表拦截点

属性有:

method表示需要拦截的方法,mybatis有
update, query, flushStatements, commit, rollback, getTransaction, close, 
isClosed type表示拦截的接口类型,有Executor、StatementHandler、ParameterHandler和
            ResultSetHandler。 args表示拦截的参数类型,有MappedStatement、Object、RowBounds和ResultHandler等等.

 

以上是关于spring-boot 注解集合的主要内容,如果未能解决你的问题,请参考以下文章

基于Spring Validation自定义校验注解

基于Spring Validation自定义校验注解

解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段

spring-boot主要注解

Spring-Boot:拦截器注解范例

在Spring-boot中,为@Value注解添加从数据库读取properties支持