SpringBoot项目中常用的几个注解

目录

1. @EnableJpaAuditing,@EntityListeners(AuditingEntityListener.class)

2. Lombok标签之 @Data @AllArgsConstructor @NoArgsConstructor @Builder @Slf4j 

3. @ApiModel,@ApiModelProperty,@Api, @ApiOperation

4. @Service

5. @RestController,@RequestMapping("xxx")

6. @Entity

7. @Table

8. @SpringBootApplication


【写在前面】

在项目中使用了SpringBoot的框架,里面涉及了一些常用注解。因此逐个查资料对这些注解做了进一步的了解,下文内容非全原创,是根据所查询的资料的汇总,结合自己的实际使用。仅供学习,如侵,请告知,会删。

相关文章:Spring中的一些常用注解

1. @EnableJpaAuditing,@EntityListeners(AuditingEntityListener.class)

项目中每条数据在创建或修改时,如果都需要人为的手动记录它创建人,创建时间,修改人,修改时间,代码冗余且显得很不友好。

Spring data JPA 为我们提供了审计功能。

Spring JPA中,支持在字段或方法上进行注解:

@CreateDate

@CreatedBy

@LastModifiedDate

@LastModifiedBy

1.1 上述四个注解的具体含义:

@CreateDate

表示该字段是创建时间字段,在这个实体被insert时,会自动填充创建的时间,不用手动填充该字段。

@CreatedBy

表示该字段是创建人字段,在这个实体被insert时,会自动填充创建人字段,不用手动填充。

@LastModifiedDate

表示该字段是更新时间字段,在这个实体(实体中某个字段或方法)被更新时,会自动填充更新的时间,不用手动填充该字段。

@LastModifiedBy

表示该字段是更新人字段,在这个实体被更新时,会自动填充更新人字段,不用手动填充。

1.2 如何实现自动填充功能

(1)在项目的启动类上添加注解 @EnableJpaAuditing:开启审计/监听功能。如下:

 

(2)在实体类上添加@EntityListeners(AuditingEntityListener.class):开启实体类监听。如下:

 

(3)在需要的字段上加上@CreatedDate、@LastModifiedDate等注解。如下:

 

(4)实现 AuditorAware接口来返回你需要插入的值

补充:

使用@CreatedBy或@LastModifiedBy,必须实现AuditorAware接口重写getCurrentAuditor方法。在定义@CreatedBy或@LastModifiedBy时,属性类型必须和AuditorAware接口的泛型类型相同。

2. Lombok标签之 @Data @AllArgsConstructor @NoArgsConstructor @Builder @Slf4j 

Lombok是一款在java开发中简洁化代码十分有用的插件工具,使用Lombok注解,就可以不用反复地去写Getter,Setter,Constructor等一些代码了。

@Data

使用后就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。

@AllArgsConstructor

使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数。

@NoArgsConstructor

使用后创建一个无参构造函数。

@Builder

作用之一是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦。在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数。

@Log4j

注解在类上;为类提供一个属性名为log的 log4j 日志对象

@Slf4j

注解在类上;为类提供一个 属性名为log 的 log4j 日志对象。可以替代:private  final Logger logger = LoggerFactory.getLogger(当前类名.class)

@Setter

注解在属性上;为属性提供 setting 方法

@Getter

注解在属性上;为属性提供 getting 方法

3. @ApiModel,@ApiModelProperty,@Api, @ApiOperation

(1)什么是swagger?

swagger是当前最好用的Restful  API文档生成的开源项目, 通过swagger-spring项目实现了springMVC框架的无缝集成功能, 方便生成restful风格的接口文档。

注意swagger和spring的版本兼容性问题:Swagger2版本和SpringBoot版本不匹配,报错

同时, swagger-ui还可以测试spring  restful风格的接口功能。

(2)常用注解:

@ApiModel:

使用场景:在实体类上使用,标记类是swagger的解析类。

作用:提供有关swagger模型的其它信息,类将在操作中用作类型时自动内省。

@ApiModelProperty:

使用场景:使用在被@ApiModel注解的模型类的属性上。表示对model属性的说明或数据操作更改 。

作用:添加和操作模型属性的数据。

@Api:

使用场景:contoller类上

value - 字段说明, description - 注释说明这个类

@ApiOperation:

使用场景:@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”), 其他参数可参考源码;

作用:用来构建Api文档的

  

需要引入相关的swagger依赖,比如:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

4. @Service

(1)Service层

服务层,即对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事务控制。

service层主要负责业务模块的应用逻辑应用设计。首先设计接口,再设计其实现类,接着在Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用service接口来进行业务处理。

service层的业务实现,具体要调用已经定义的dao层接口,封装service层业务逻辑,有利于通用的业务逻辑的独立性和重复利用性。即,建议将业务的实现放到service层中。

(2)@Service注解

属于业务逻辑层,service或者manager层

默认按照名称进行装配,名称可以通过name属性指定,如果没有name属性,注解写在字段上时,默认去字段名进行查找,如果注解写在setter方法上,默认按照方法属性名称进行装配。

当找不到匹配的bean时,才按照类型进行装配,如果name名称一旦指定就会按照名称进行装配。

示例如图:

 

5. @RestController,@RequestMapping("xxx")

(1)@RestController

@RestController 标签等价于@Controller+@ResponseBody。

@Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。当然也有语义化的作用,即代表该类是充当Controller的作用。

@ResponseBody 它的作用就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Obejct, 它会以Json字符串的形式返回给客户端。

(2)@RequestMapping("/api/case")

@RequestMapping注解可以定义不同的处理器映射规则。

主要定义在方法之上,Controller类上也可以使用。

在类上添加@RequestMapping(url),指定通用请求前缀, 限制此类下的所有方法请求url必须以此请求前缀开头,通过此方法对url进行分类管理。见下方截图。

@GetMapping

@PostMapping

--- consumes属性:指定处理请求的提交内容类型(Content-Type),例如application/json、text/html等等,只有命中了对应的Content-Type的值才会接受该请求。

--- produces属性:指定返回的内容类型,仅当某个请求的请求头中的(Accept)类型中包含该指定类型才返回,如果返回的是JSON数据一般考虑使用application/json;charset=UTF-8。

@PutMapping

@PatchMapping

@DeleteMapping

 

6. @Entity

该注解加在实体类上,定义该对象将会成为被JPA管理的实体,映射到指定的数据库。

 

7. @Table

该注解用来说明该实体类对应数据库和表,其中name =“xxx",用来表示数据表的名字,catalog = “xxx"是数据库的名字

8. @SpringBootApplication

(1)作用:

创建SpringBoot项目时默认生成的,放置在Springboot启动类上,表明该类是开启Springboot容器的入口。

@SpringBootApplication注解声明的类就是main函数所在的启动类,

因此扫描的包是该类所在包及其子包。因此,一般启动类会放在一个比较前的包目录中。

@EnableJpaAuditing
@SpringBootApplication
public class AutotestApplication {

    public static void main(String[] args) {
        SpringApplication.run(AutotestApplication.class, args);
    }
}

(2)这是一个复合注解,里面包含了包扫描/自动注入/配置注入的功能。主要有以下三个注解:

@SpringBootConfiguration:

在这个类的源码中又有一个@Configuration的注解。

@Configuration这个注解的作用就是声明当前类是一个配置类,然后Spring会自动扫描到添加了@Configuration的类,读取其中的配置信息。

而@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。所以一般我们无需自己添加。

@EnableAutoConfiguration:

开启自动配置,告诉SpringBoot基于所添加的依赖,去“猜测”你想要如何配置Spring。

比如我们引入了spring-boot-starter-web,而这个启动器中帮我们添加了tomcat、SpringMVC的依赖,此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!

我们使用SpringBoot构建一个项目,只需要引入所需框架的依赖,配置就可以交给SpringBoot处理了。

@ComponentScan:

配置组件扫描的指令。

提供了类似与<context:component-scan>标签的作用。

通过basePackageClasses或者basePackages属性来指定要扫描的包。

如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值