Spring Boot 常用注解

在 ssm框架中有大量的配置文件如spring-mvc.xml,web.xml等。但是在spring boot 中 只有 .properties或 .yam的配置文件,进行一些如数据库连接,邮件发送等常量的属性的配置(数据库用户名,密码,数据库名称等待)。
在ssm框架中 配置文件主要是为了实现应用的解耦。实现一次配置多次使用。而在spring boot中没有spring-mvc.xml,web.xml等配置文件。而是使用注解的方式来实现。把应用和配置让应用和配置紧密相关。

 @RestController

是@Controller和@ResponseBody的组合,一个顶两个

@GetMapping("XXX")

是@RequestMapping(method=RequestMethod.GET)的缩写,用来处理get请求

@Modifying

修改条目的时候会有用

@Query(XXX)/@Query(value="XXX")

使用HQL语句或SQL语句自定义查询,而非Spring Data解析方法名的方式查询。

@RunWith(XXX)

指定测试支持

@WebAppConfiguration

测试Web项目时使用,添加ServletContext域对象

@PersistenceContext

同 @Autowired,不同点在于,@PersistenceContext可以装配不同数据库的持久化对象。

@Value("XXX")

注入属性值

@JsonIgnore

生成JSON时不生成此属性

@SpringBootApplication

@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。

1、@Configuration:提到@Configuration就要提到他的搭档@Bean。使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。

1\. <beans>  

2.     <bean id = "car" class="com.test.Car">  

3.         <property name="wheel" ref = "wheel"></property>  

4.     </bean>  

5.     <bean id = "wheel" class="com.test.Wheel"></bean>  

6\. </beans>  

相当于:

1\. @Configuration

2\. public class Conf {

3.     @Bean

4.     public Car car() {

5.         Car car = new Car();

6.         car.setWheel(wheel());

7.         return car;

8.     }

9.     @Bean

10.     public Wheel wheel() {

11.         return new Wheel();

12.     }

13\. }

2、@EnableAutoConfiguration:能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。

3、@ComponentScan:会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。

## @EnableCaching

它是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解。如果你使用了这个注解,那么你就不需要在XML文件中配置cache manager了。

@Aspect

切面注解

@Order(1)

tips: Integer.MIN_VALUE < Order < Integer.MAX_VALUE

Order值越小,优先级越高!

@Order的作用范围: ElementType.TYPE, ElementType.METHOD, ElementType.FIELD

@Pointcut("within(com.ubiai.bifrost.controller..*)")

定义切入点

@AfterThrowing(pointcut = "exception()", throwing = "ex")

异常通知

@Around("validate()")

环绕通知,记录校验日志

@Data

类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法

@ConfigurationProperties

把配置文件的值直接注入到代码

[图片上传失败...(image-9ab0e4-1527563751954)] 

@Configuration

### 配置spring并启动spring容器

@Bean

定义bean,和@Configuration配合使用

@Converter

类型转换器(和@Initbinder不同)

@SuppressWarnings

警告收集器

@NoArgsConstructor

生成一个无参数的构造方法

@RequiredArgsConstructor

会生成一个包含常量,和标识了NotNull的变量的构造方法。生成的构造方法是private,如何想要对外提供使用staticName选项生成一个static方法。

@AllArgsContructor

会生成一个包含所有变量,同时如果变量使用了NotNull annotation, 会进行是否为空的校验。

@Setter

@Getter

生成setter和getter方法

@CacheConfig(cacheNames = {"users"})

* @CacheConfig:主要用于配置该类中会用到的一些共用的缓存配置。在这里@CacheConfig(cacheNames = "users"):配置了该数据访问对象中返回的内容将存储于名为users的缓存对象中,我们也可以不使用该注解,直接通过@Cacheable自己配置缓存集的名字来定义。

* @Cacheable:配置了findByName函数的返回值将被加入缓存。同时在查询时,会先从缓存中获取,若不存在才再发起对数据库的访问。该注解主要有下面几个参数:

* value、cacheNames:两个等同的参数(cacheNames为Spring 4新增,作为value的别名),用于指定缓存存储的集合名。由于Spring 4中新增了@CacheConfig,因此在Spring 3中原本必须有的value属性,也成为非必需项了

* key:缓存对象存储在Map集合中的key值,非必需,缺省按照函数的所有参数组合作为key值,若自己配置需使用SpEL表达式,比如:@Cacheable(key = "#p0"):使用函数第一个参数作为缓存的key值,更多关于SpEL表达式的详细内容可参考官方文档

* condition:缓存对象的条件,非必需,也需使用SpEL表达式,只有满足表达式条件的内容才会被缓存,比如:@Cacheable(key = "#p0", condition = "#p0.length() < 3"),表示只有当第一个参数的长度小于3的时候才会被缓存,若做此配置上面的AAA用户就不会被缓存,读者可自行实验尝试。

* unless:另外一个缓存条件参数,非必需,需使用SpEL表达式。它不同于condition参数的地方在于它的判断时机,该条件是在函数被调用之后才做判断的,所以它可以通过对result进行判断。

* keyGenerator:用于指定key生成器,非必需。若需要指定一个自定义的key生成器,我们需要去实现org.springframework.cache.interceptor.KeyGenerator接口,并使用该参数来指定。需要注意的是:该参数与key是互斥的

* cacheManager:用于指定使用哪个缓存管理器,非必需。只有当有多个时才需要使用

* cacheResolver:用于指定使用那个缓存解析器,非必需。需通过org.springframework.cache.interceptor.CacheResolver接口来实现自己的缓存解析器,并用该参数指定。

除了这里用到的两个注解之外,还有下面几个核心注解:

* @CachePut:配置于函数上,能够根据参数定义条件来进行缓存,它与@Cacheable不同的是,它每次都会真是调用函数,所以主要用于数据新增和修改操作上。它的参数与@Cacheable类似,具体功能可参考上面对@Cacheable参数的解析

* @CacheEvict:配置于函数上,通常用在删除方法上,用来从缓存中移除相应数据。除了同@Cacheable一样的参数之外,它还有下面两个参数:

* allEntries:非必需,默认为false。当为true时,会移除所有数据

* beforeInvocation:非必需,默认为false,会在调用方法之后移除数据。当为true时,会在调用方法之前移除数据。

@Cacheable(key = "#id")

@CachePut(key = "#user.id")

@CacheEvict(key = "#id")

AccessLevel.PRIVATE

设置访问级别为私有

@RunWith(SpringRunner.class)

@SpringBootTest(properties = {"server.port=9999"})

SpringBoot测试类方法

提示一点:@ConstructorProperties 只能用在JDK 6 中

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容