美文网首页
Spring Boot 常用注解

Spring Boot 常用注解

作者: 风的低语 | 来源:发表于2018-05-29 11:16 被阅读45次

    在 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 中
    
    

    相关文章

      网友评论

          本文标题:Spring Boot 常用注解

          本文链接:https://www.haomeiwen.com/subject/arvsjftx.html