在springboot框架中,注解做为一种隐式配置,极大的简化了之前xml文件的配置方式。springboot中包含许多种类的注解,这里对在spingboot项目中经常使用到的一些注解的进行大致的归纳总结;
1、@springbootapplication
在spirngboot启动类里面,都加入了此启动注解,此注解是个组合注解,包括了@springbootconfiguration 、@enableautoconfiguration和@componentscan注解。
,其实两种功能一致,都是标注该类为配置类
spring
容器中。注意事项:
exclude
进行排除@springbootapplication(exclude = {datasourceautoconfiguration.class})
@configuration @componentscan(basepackages = {"com.test.service"}) //引入第三方jar包下的类
2、@import
@import注解可用来导入一个或者多个 spring 配置文件,特别是第三方jar包下的一些配置类,需要通过import注解进行加载,代码如下所示
@import({kafkaconfig.class, jedisconfig.class}) //引入第三方jar包里配置类
以一般的的配置类中用到的注解为例
1、@configuration
@configuration专门用来标注配置类,它一般会配合
2、@bean
使用@bean注解拿到配置返回相关实例,并放入sping容器中统一管理
3、@propertysource
目的是加载指定路径下的属性文件
5、@value
配合@propertysource注解使用,指定该字段对应的配置文件中的内容
4、@order
利用@order控制配置类的加载顺序
结合以上注解对kafka进行配置示例代码如下
@configuration @propertysource("classpath:spring-kafka.properties") @order(2) public class kafkaconfig { @value("${spring.kafka.bootstrap-servers}") private string bootstrapservers; @bean public kafkalistenercontainerfactory<concurrentmessagelistenercontainer<object, object>> kafkalistenercontainerfactory() { concurrentkafkalistenercontainerfactory<object, object> factory = new concurrentkafkalistenercontainerfactory<object, object>(); factory.setconsumerfactory(consumerfactory()); factory.setconcurrency(1); // factory .getcontainerproperties().setpolltimeout(1000); return factory; } }
1、@service
用于标注服务层,主要用来进行业务的逻辑处理
2、@repository
用于标注持久层,主要用来进行数据库相关操作
3、@component
一个通用的注解,可以注解各种组件,就是说当我们需要注入sping容器中bean类没有明确分类时(不属于@service、@repository等的时候),我们就可以使用@component来标注这个类。
4、@scope
spring容器管理bean默认是单例模式,如果你需要使用多例模式可以通过@scope("prototype")注解来实现。
5、@autowired
这个就很简单了,用于spring容器中bean类实例的注入
6、@postconstruct
在bean初始化之后(构造方法和@autowired之后)执行指定操作。如果在项目中有些操作需要在bean类构造后执行,可以使用@postconstruct注解,实例代码如下
@component public class demo { @postconstruct public void start() { //在构造方法和@autowired注入实例后执行 } }
1、@controller 和 @restcontroller
控制器的注解,处理http请求的入口,这两个注解的主要区别在于@controller中如果需要返回json数据需要使用@responsebody注解来配合,直接用@restcontroller则直接返回json数据
2、@requestmapping
requestmapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
requestmapping注解有六大属性
value, method;
value: 指定请求的实际地址,指定的地址可以是uri template 模式(后面将会说明);
method: 指定请求的method类型, get、post、put、delete等;
consumes,produces;
consumes: 指定处理请求的提交内容类型(content-type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(accept)类型中包含该指定类型才返回;
params,headers;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求;
requestmapping的简化注解有:
@getmapping 等同于 @requestmapping(method = requestmethod.get) @postmapping 等同于 @requestmapping(method = requestmethod.post) @putmapping 等同于 @requestmapping(method = requestmethod.put) @deletemapping 等同于 @requestmapping(method = requestmethod.delete) @patchmapping 等同于 @requestmapping(method = requestmethod.patch)
3、@requestbody
requestbody注解允许request的参数在reqeust体中,也就是后端以实体的方式接收前端发送的数据
4、@requestparam
requestparam注解则是以不同参数之间用&分隔的方式接收前端发送的数据
结合以上注解的常规示例代码如下
@restcontroller @requestmapping("/api") public class apicontroller extends basecontroller { @postmapping("/login") public user login(@requestbody user user){ //代码 } @getmapping("/getuser") public user getuser(@requestparam string username, @requestparam string userphone){ //代码 } }
以上就是在spirngboot项目中经常使用到的一些注解进行的总结,当然还有很多其他注解在这里就不一一赘述了。
如对本文有疑问, 点击进行留言回复!!
荐 嵌入式linux开发环境搭建(Docker版,基于iTop 4412开发板)
SpringBoot项目部署到服务器之 Liunx环境安装jdk详细步骤
网友评论