spring-boot 注解集合
Posted 小丑quan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-boot 注解集合相关的知识,希望对你有一定的参考价值。
@Configuration
@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-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段