转载

常用注解积累

0.标准元注解(用于标记注解) 都是干嘛的呢?

@Documented 标记生成javadoc

@Inherited 标记继承关系

@Retention 注解的生存期

@Target 标注的目标

1.@PostConstruct用来修饰一个非静态的void()方法,在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的init()方法,比如说有一种情况,在servlet初始化加载之前想处理一些东西,像加载缓存等等; 这玩意用的不多是因为如果初始化之前我们要加载或处理某些玩意完全可以在构造器初始化时就处理了,但这种方法需要自己重写构造器

2.@Around结合@Aspect使用,通过AOP切面的方式进行方法增强,常用于自定义注解,被自定义注解标记的方法执行前要先执行被@Around标记的方法

3.@Api用于标记controller,@ApiOperation用于标记方法,@ApiModel用于标记entity,@ApiModelProperty用于标记属性名,都是swagger中的注解用于实时生成接口文档,地址类似 http://localhost:8191/swagger-ui.html

4.@RestController=@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

5.@RequestBody 注解则是将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体(主要json字符串)写入某个对象HttpMessageConverter<T> 是 Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息                                                DispatcherServlet 默认加载 HttpMessageConveter 的6个实现类

eg:{"token":"11111111111111111111111111111111",
    "param":{"loginName":"admin",
             "page.pageNo":"1",
             "page.pageSize":"10",
             "page.orderBy":"id" }
    }
@Data
public class ReqApiParam implements Serializable{
   private String client;
   private Map param;
   private String token;
   private String loginName;
}复制代码

6.@JsonView注解用来定义一个标签,根据controller的JsonView属性,将实体类中不同标签的属性进行分类显示,根据分类可选择哪些属性返回给APP

7.@Cacheable可以标记在一个方法上,也可以标记在一个类上。当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表示该类所有的方法都是支持缓存的。对于一个支持缓存的方法,Spring会在其被调用后将其返回值缓存起来,以保证下次利用同样的参数来执行该方法时可以直接从缓存中获取结果,而不需要再次执行该方法

8.@CacheConfig,所有的@Cacheable()里面都有一个value=“xxx”的属性,这显然如果方法多了,写起来也是挺累的,如果可以一次性声明完那就省事了

9.@Resource,既不指定name属性,也不指定type属性,则默认按byName方式进行查找。如果没有找到符合的bean,则回退为一个原始类型进行进行查找,如果找到就注入;@Autowired默认按照类型方式进行bean匹配

10.@Reference是dubbo框架中用来注入服务端暴露的接口

11.@Component 对那些比较中立的类进行注释

12.@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan(指定扫描包)                                                                                             包扫描,也是需要自定义的,默认只扫描到入口类所在的包以及入口类所在包的下一级;       @Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>,作用为:配置spring容器(应用上下文)

13.springboot启动定时任务

1.@SpringBootApplication @EnableScheduling // 启动定时任务

2.@SpringBootApplication                                      @ImportResource("classpath:/schedule/spring_schedule.xml")

@Scheduled(

cron = "${scheduled.data.qrordersync.config}") //括号中为在application.yml配置内容

原来在spring的xml中配置的task:annotation-driven等价于@EnableScheduling,启动定时任务

14.                                                                                                                                          1、@Mapper注解:作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实      现类   添加位置:接口类上面

2、@MapperScan

作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应      的实现类

添加位置:是在Springboot启动类上面添加

15. @AutoConfigureBefore({WebMvcAutoConfiguration.class}):在指定的配置类初始化前加载

16.环绕通知 ProceedingJoinPoint 执行proceed方法的作用是让目标方法执行

17.@SuppressWarnings("unchecked") 作用:用于抑制编译器产生警告信息

18.Spring 通过注解获取*.porperties文件的内容,除了xml配置外,还可以通过@value方式来获取

19.@Primary:在spring 中使用注解,常使用@Autowired, 默认是根据类型Type来自动注入的。但有些特殊情况,对同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种的情况下 @Primary 的作用就出来了

原文  https://juejin.im/post/5cd3eff65188257707362fd8
正文到此结束
Loading...