栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java开发中常见注解及含义】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java开发中常见注解及含义】

JDK内置注解 @Override

重写, 标识覆盖它的父类的方法

@Deprecated

已过期,表示方法是不被建议使用的

@Suppvisewarnings

压制警告,抑制警告

@Target

表示该注解用于什么地方,可取的值包括:

ElemenetType.CONSTRUCTOR 构造器声明 ElemenetType.FIELD 域声明(包括 enum 实例)
ElemenetType.LOCAL_VARIABLE 局部变量声明 ElemenetType.METHOD 方法声明
ElemenetType.PACKAGE 包声明 ElemenetType.PARAMETER 参数声明
ElemenetType.TYPE 类,接口(包括注解类型)或enum声明 ElementType.ANNOTATION_TYPE 注解

@Retention

表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:

RetentionPolicy.SOURCE 注解将被编译器丢弃 RetentionPolicy.CLASS
注解在class文件中可用,但会被VM丢弃 RetentionPolicy.RUNTIME
JVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。

@Documented

将此注解包含在 javadoc 中

@Inherited

允许子类继承父类中的注解

Spring相关注解 1.声明bean的注解 @Component

组件,没有明确的角色

@Service

在业务逻辑层使用(service层)

@Repository

在数据访问层使用(dao层)

@Controller

在展现层使用,控制器

2.注入bean的注解 @Autowired

@Autowired注解可用于为类的属性、构造器、方法进行注值。默认情况下,其依赖的对象必须存在(bean可用),如果需要改变这种默认方式,可以设置其required属性为false。
还有一个比较重要的点就是,@Autowired注解默认按照类型装配,如果容器中包含多个同一类型的Bean,那么启动容器时会报找不到指定类型bean的异常,解决办法是结合
@Qualifier 注解进行限定,指定注入的bean名称。

@Resource

@Resource有两个中重要的属性:name和type。
name属性指定byName,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。
需要注意的是,@Resource如果没有指定name属性,并且按照默认的名称仍然找不到依赖对象时,
@Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。

@Inject

@Inject支持构造函数、方法和字段注解,也可能使用于静态实例成员。可注解成员可以是任意修饰符。

注入顺序:构造函数、字段,然后是方法。父类的字段和方法注入优先于子类的字段和方法,同一类中的字段和方法是没有顺序的。

@Inject注解的构造函数可以是无参或多个参数的构造函数。@Inject每个类中最多注解一个构造函数。

3.java配置类相关注解 @Bean

注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式(方法上)

@Configuration

声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean(类上)

@ComponentScan

用于对Component进行扫描,相当于xml中的(类上)

@WishlyConfiguration

为@Configuration与@ComponentScan的组合注解,可以替代这两个注解

4.切面(AOP)相关注解

Spring支持AspectJ的注解式切面编程。

@Aspect 声明一个切面(类上)

使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。

@After 在方法执行之后执行(方法上) @Before 在方法执行之前执行(方法上) @Around 在方法执行之前与之后执行(方法上) @PointCut 声明切点

在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)

SpringBoot常用注解 1.SpringBoot框架常用 @RestController

和@Controller指定一个类,作为控制器的注解 ,并说明其区别

@RequestMapping

方法级别的映射注解,这一个用过Spring MVC的小伙伴相信都很熟悉

@EnableAutoConfiguration

和@SpringBootApplication是类级别的注解,根据maven依赖的jar来自动猜测完成正确的spring的对应配置,只要引入了spring-boot-starter-web的依赖,默认会自动配置Spring
MVC和tomcat容器

@Configuration

类级别的注解,一般这个注解,我们用来标识main方法所在的类,完成元数据bean的初始化。

@ComponentScan

类级别的注解,自动扫描加载所有的Spring组件包括Bean注入,一般用在main方法所在的类上

@ImportResource

类级别注解,当我们必须使用一个xml的配置时,使用@ImportResource和@Configuration来标识这个文件资源的类。

@Autowired注解

一般结合@ComponentScan注解,来自动注入一个Service或Dao级别的Bean

@Component

类级别注解,用来标识一个组件,比如我自定了一个filter,则需要此注解标识之后,Spring Boot才会正确识别。

springboot是如何管理事务的?直接写@transactional注解就行,在方法就是方法事务,类上就是类事务。

2.redis缓存常用 @EnableCaching

开启缓存功能,配置类中需要加上这个注解,有了这个注解之后,spring才知道你需要使用缓存的功能,其他和缓存相关的注解才会有效

@CacheConfig

在要用缓存的类上添加@CacheConfig(cacheNames = “product”),相当于作用域是product

@Cacheable

赋予缓存功能,在类中要使用缓存的方法上添加

@Cacheable(key = “#sellerId”,condition = “#sellerId.length() > 3”,unless = “#result.getCode() !=0”)

condition 表示对入参进行判断,如果判断结果为false,则不使用缓存即不会到redis取到数据,否则去redis 取到数据

unless 表示对方法返回的结果进行判断,因为是unless,所以变得是这么判断的,结果如果不等于false,则去redis取到数据,否则不使用缓存(相当于把判断语句写反过来)

@CacheEvict

@CacheEvict(key = “123”)该注解表示要清除123这个key,作用域可以在类上面
@CacheEvict(cacheNames = “product”,key = “123”)

@CachePut

@CachePut(cacheNames = “product”,key = “123”)表示对123这个key进行更新

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。

@ControllerAdvice

通过该注解,我们可以将对于控制器的全局配置放置在同一个位置,注解了@Controller的类的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,这对所有注解了
@RequestMapping的控制器内的方法有效。

@ExceptionHandler

用于全局处理控制器里的异常

@InitBinder

用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。

@ModelAttribute

本来的作用是绑定键值对到Model里,在@ControllerAdvice中是让全局的@RequestMapping都能获得在此处设置的键值对。

Lombok常用注解 @Getter/@Setter

代替 实体类中getter 和 setter 方法

@NonNull/@NotEmpty

@NonNull 用于标记类中不能允许为 null 的字段或者参数上
@NotEmpty 用于标记类中不能允许为空的字段或者参数上

@NoArgsConstructor/@AllArgsConstructor/@RequiredArgsConstructor

@NoArgsConstructor 为实体类生成无参的构造器方法
@AllArgsConstructor 为实体类生成除了static修饰的字段之外带有各参数的构造器方法。
@RequiredArgsConstructor 为实体类生成指定字段的构造器方法,而这些字段需要被 final,或者 @NonNull

@ToString/@EqualsAndHashCode

@EqualsAndHashCode 根据类所拥有的非静态字段自动重写 equals 方法和 hashCode方法,方便我们用于对象间的比较。用法和@ToString类似,同样也支持@EqualsAndHashCode.Exclude和@EqualsAndHashCode.Include

@Data/@Value

@Data/@Value 注解,提供了更综合的生成代码功能,等价于下面几个注解。

@see lombok.Getter
@see lombok.experimental.FieldDefaults
@see lombok.AllArgsConstructor
@see lombok.ToString
@see lombok.EqualsAndHashCode
@see lombok.Data
@Builder

@Builder 是一个非常强大的注解,提供了一种基于建造者模式的构建对象的 API。使用 @Builder 注解为给我们的实体类自动生成 builder() 方法,并且直接根据字段名称方法进行字段赋值,最后使用build()方法构建出一个实体对象。

@Data
@Builder
public class LombokBuilder {
    private int id;
    private String name;
}

public class TestMain {
    public static void main(String[] args) {
        LombokBuilder lombokBuilder = LombokBuilder.builder().id(2).build();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/885326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号