zoukankan      html  css  js  c++  java
  • Java项目常用注解总结

    1.常用注解及作用

    1.1 Spring相关注解

    @Autowired、@Resource、@Component

    分享一篇关于@Autowired和@Resource非常好的文章:https://www.cnblogs.com/xrq730/p/5313412.html

    @Autowired :默认按类型装配,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:

    @Autowired @Qualifier("personDaoBean") 存在多个实例配合使用

    @Resource :它的作用相当于 @Autowired,只不过** @Autowired 按 byType** 自动注入,面**@Resource 默认按 byName **自动注入,当找不到与名称匹配的bean才会按类型装配

    @Controller:用于标注控制层组件

    @Service:用于标注业务层组件

    @Repository:标注一个DAO组件类

    @component: (把普通pojo实例化到spring容器中,相当于配置文件中的 
    <bean id="" class=""/>
    泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

    @Autowired + @Qualifier

    获取bean,等于@Resource

    1.2 SpringBoot相关注解

    @SpringBootApplication

    包含@Configuration、@EnableAutoConfiguration、@ComponentScan
    通常用在启动类上。

    @ComponentScan

    组件扫描。如果扫描到有@Component @Controller @Service等这些注解的类,则把这些类注册为bean。

    @Configuration

    指出该类是 Bean 配置的信息源,相当于XML中的<beans></beans>,一般加在主类上。

    @EnableAutoConfiguration

    让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上。

    @Slf4j

    在类上添加@Slf4j注解,在方法中直接使用log。

    @ImportResource

    通过locations属性加载对应的xml配置文件,同时需要配合@Configuration注解一起使用,定义为配置类

    @EnableScheduling

    定时任务注解。

    @EnableDiscoveryClient

    基于spring-cloud-commons,并且在classpath中实现。

    @EnableEurekaClient

    基于spring-cloud-netflix,只能为eureka作用。

    就是如果选用的注册中心是eureka推荐@EnableEurekaClient,如果是其他的注册中心推荐使用@EnableDiscoveryClient,如果classpath中添加了eureka,则它们的作用是一样的。

    @PropertySource

    可以知道@Value和@ConfigurationProperties都可以用于获取配置文件的属性值,不过有个细节容易被忽略,那就是,这两个注解在Springboot项目中都是获取默认配置文件的属性值,也就是application.yml或者application.properties的属性值

    不过我们想要配属性的话,肯定都不能全都往默认配置文件里堆的,如果想引用其它配置文件的属性值,就可以使用本博客介绍的@PropertySource注解

    @EnableEncryptableProperties

    用于加密

    @EnableTransactionManagement

    Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional 便可。

    关于事务管理器,不管是JPA还是JDBC等都实现自接口 PlatformTransactionManager 如果你添加的是 spring-boot-starter-jdbc 依赖,框架会默认注入 DataSourceTransactionManager 实例。如果你添加的是 spring-boot-starter-data-jpa 依赖,框架会默认注入 JpaTransactionManager 实例。

    1.3 SpringMVC相关注解

    @EnableWebMvc

    在配置类中开启Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若无此句,重写WebMvcConfigurerAdapter方法(用于对SpringMVC的配置)。
    @Controller

    声明该类为SpringMVC中的Controller
    @RequestMapping

    用于映射Web请求,包括访问路径和参数(该注解贴在类或方法上)
    @ResponseBody

    支持将返回值放在response内,而不是一个页面,通常用户返回json数据(该注解贴在返回值旁或方法上)
    @RequestBody

    允许request的参数在request体中,而不是在直接连接在地址后面。(放在形参前)
    @PathVariable

    用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现方法。
    @RestController

    该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。

    1.4 面向切面相关

    @Aspect

    面向切面编程注解,Spring AOP 中用来自定义切面

    @Before

    方法前执行

    @After

    方法后执行

    @Around

    环绕执行

    @Scheduled

    执行计划

    1.5 Dubbo相关常用注解

    @Service

    表示提供者

    @Reference

    表示消费者

    @EnableDubbo

    启用Dubbo整合配置

    1.6 缓存

     @Cacheable

    最常用的一个,若缓存中没有对应键,则执行方法,并把返回值放入缓存,如果有则从缓存中取,不执行方法

    @CacheEvict

    删除缓存

    @CachePut

    修改缓存

    @Caching

    同时使用上面多个的时候使用

    @CacheConfig

    放在类上统一类中的其它缓存注解,如下相当于在这个类中的其它所有缓存注解都被默认加上了cacheNames = "",cacheManager = ""

    1.7 @Value

    使用@Value可以为属性字段赋值
    1、基本数值
    2、可以写SpEL; #{}
    3、可以写${};取出配置文件【properties】中的值(在运行环境变量里面的值)

    配置类
    使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;
    加载完外部的配置文件以后使用${}取出配置文件的值

    @PropertySource(value={"classpath:/person.properties"})
    @Configuration
    public class MainConfigOfPropertyValues {
    	
    	@Bean
    	public Person person(){
    		return new Person();
    	}
    
    }

    bean

     1 public class Person {
     2     @Value("张三")
     3     private String name;
     4 
     5     @Value("#{20-2}")
     6     private Integer age;
     7     
     8     @Value("${person.nickName}")
     9     private String nickName;
    10 }

    具体详情区别网址https://blog.csdn.net/woheniccc/article/details/79804600

    1.8 @ComponentScan

    自动扫描指定包下所有使用@Service,@Component,@Controller,@Repository的类并注册
    示例:

    @ComponentScan(value="com.atguigu",includeFilters = {
            @Filter(type=FilterType.ANNOTATION,classes={Controller.class}),
            @Filter(type=FilterType.ASSIGNABLE_TYPE,classes={BookService.class}),
            @Filter(type=FilterType.CUSTOM,classes={MyTypeFilter.class})
                },useDefaultFilters = false)    
    //excludeFilters = Filter[] :指定扫描的时候按照什么规则排除那些组件
    //includeFilters = Filter[] :指定扫描的时候只需要包含哪些组件,
    需设置useDefaultFilters = false
    //FilterType.ANNOTATION:按照注解
    //FilterType.ASSIGNABLE_TYPE:按照给定的类型;
    //FilterType.ASPECTJ:使用ASPECTJ表达式
    //FilterType.REGEX:使用正则指定
    //FilterType.CUSTOM:使用自定义规则

     

    1.9 @Bean的属性支持

    @Scope 设置Spring容器如何新建Bean实例(该注解贴在方法上,得有@Bean)
    其设置类型包括:
    Singleton (单例,一个Spring容器中只有一个bean实例,默认模式)
    Protetype (每次调用新建一个bean)
    Request (web项目中,给每个http request新建一个bean)
    Session (web项目中,给每个http session新建一个bean)

    2.0 事务注解 @Transactional

    在 Spring 中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式

    编程式事务管理:编程式事务管理使用 TransactionTemplate 或者直接使用底层的 PlatformTransactionManager。对于编程式事务管理,spring 推荐使用 TransactionTemplate。声明式事务管理:建立在 AOP 之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务,通过 @Transactional 就可以进行事务操作,更快捷而且简单。推荐使用

    2.1 @Lazy

    单实例bean:默认在容器启动的时候创建对象;
    懒加载:容器启动不创建对象。第一次使用(获取)Bean创建对象,并初始化;

     

     

     

     

     

     

  • 相关阅读:
    centos6 LVS-DR模式---分析
    centos6.6 安装 LXC
    Amoeba-mysql读写分离实战
    keepalived +mysql 实战
    nginx添加sticky模块-cookie保持会话
    haproxy转发真实IP给web
    Mysql-如何正确的使用索引以及索引的原理
    Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)
    Mysql-常用数据的基本操作和基本形式
    Mysql-多表连接的操作和用法
  • 原文地址:https://www.cnblogs.com/xujiangxi/p/13554600.html
Copyright © 2011-2022 走看看