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\.   

2.       

3.           

4.       

5.       

6\.   

相当于:

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 中

你可能感兴趣的:(Spring Boot 常用注解)