目录
- Spring常用注解
- Spring基础注解
- 启动类注解
- 工具常用注解
- Swagger常用注解
- Json(jackson常用注解
Spring常用注解
Spring基础注解
多数注解的作用,都是用于Spring类扫描时将Bean放入Spring容器中。
@Service(业务层注解)
业务层注解,一般写在Service类或者ServiceImpl类上。
@Controller/@RestController(控制层注解)
控制层注解,一般写在Controller类上。
推荐使用@RestController
@Repository(DAO层注解)
DAO层注解,一般写在Mapper类上。
@Configuration(配置类注解)
配置类注解,一般写在Conf类上。
@Value+@ConfigurationProperties(获取配置的两种注解)
@Component(组件类注解)
组件类注解,一般写在不好分类的类上。
@Autowired(注入依赖)
注入依赖,生成Spring容器中的实例
@Autowired
private EnvEntBaseinfoService envEntBaseinfoService;
参考使用@Autowired注解警告Field injection is not recommended
@Resource(注入依赖)
按name或者type注入依赖,生成Spring容器中的实例
@Resource(name="envEntBaseinfoService")
private EnvEntBaseinfoService envEntBaseinfoService;
@Override(校验接口与父类一致)
校验方法实现或接口与父类一致。
@Override
public ResponseResult doProcessImportData()
@RequestBody(接收前端Json格式)
POST方式下,接收前端传递给后端的json字符串。
public Result<?> pushEnpSystemData(@RequestBody String body)
@RequestMapping("/envPttRec")(所有请求方式)
写在Controller类或者方法上,支持各种请求方式,括号中为请求路径。
@GetMapping("/envPttRec")(Get请求方式)
写在Controller方法上,只支持GET请求方式,括号中为请求路径。
@PostMapping("/envPttRec")(Post请求方式)
写在Controller方法上,只支持POST请求方式,括号中为请求路径。
启动类注解
启动类加载项目时,需要引入你所使用的相关功能。
@SpringBootApplication(启动类)
@SpringBootApplication 注解提供了4个属性可供配置:
- exclude —— 根据Class对象来排除特定的类,不加入到Spring容器中,传入Class数组。
- excludeName —— 根据类名来排除特定的类,不加入到Spring容器中,传入参数是类的全限定名数组。
- scanBasePackages —— 指定自动扫描的包,参数是字符串数组。
- scanBasePackageClasses —— 指定自动扫描的包,参数是Class对象数组。
@SpringBootApplication主要由下面三个注解组成,可以使用下面三个代替。
@Configuration
在SpringBoot中,被@Configuration 注解的类是一个配置类,相当于Spring中的xml配置文件。
@EnableAutoConfiguration
@EnableAutoConfiguration借助@Import注解使用AutoConfigurationImportSelector将所有符合自动配置条件的bean定义加载到Spring的IoC容器中。
@ComponentScan
@ComponentScan的作用是开启Spring的自定扫描功能,将范围内被@Component 注解的类加载到容器中,并生成bean。可以通过basePackages等属性指定自动扫描的范围。如果不指定,则默认是从被@ComponentScan注解的类所在的package进行扫描,因此SpringBoot的启动类最好放在项目的root package下面,这样才能保证整个项目下的所有类都在扫描范围中。
@EnableEurekaClient(注册中心)
@MapperScan(mapper.xml文件扫描)
@EnableFeignClients(服务间调用)
@EnableApolloConfig(配置中心)
@EnableHystrix(熔断器)
@EnableCaching (缓存)
- 添加缓存
@Cacheable(cacheNames = “test2”,keyGenerator = “redisKeyGenerator”)
cacheNames :缓存名称
keyGenerator :缓存配置
@Cacheable(value = “”,key = “”)
value:Cache名称
key:自定义key - 清除缓存
@CacheEvict(cacheNames = “test2”,keyGenerator = “redisKeyGenerator”)
@CacheEvict(value = )
工具常用注解
@Test(测试方法)
@RunWith(测试类运行环境、测试类打印日志)
@Profile(运行环境控制)
@ControllerAdvice + @ExceptionHandler(全局处理 Controller 层异常)
@SpringBootTest(单元测试)
@Valid(实体类参数校验+统一异常处理)
@Slf4(日志应用-待完善使用)
引用@Slf4,可以在项目中使用log。
@CrossOrigin(解决跨域问题)
写在Controller方法上。
@Import(运行时注入Bean)
Swagger常用注解
@Api(swagger类属性设置,注释在类上)
- 使用方式
@Api(tags = "测试类(名称字段)",description = "测试接口(描述字段)",value = "值")
public class TestController
- 效果
@ApiOperation(swagger方法属性设置,注释在方法上)
- 使用方式
@ApiOperation(tags = "接口标签",value = "测试接口")
@PostMapping("/test")
public QYResponse test(){
QYResponse qyResponse = new QYResponse(0,"success","成功");
return qyResponse;
}
- 效果
@ApiIgnore(swagger忽略方法,注释在方法上)
- 使用方式
@ApiOperation("配置文件引用测试")
@ApiIgnore(value = "忽略")
@PostMapping("/test3")
public QYResponse test3() throws IllegalAccessException, InstantiationException {
Animal animal = Animal.class.newInstance().getDog();
QYResponse qyResponse = new QYResponse(0,animal.getName(),"成功");
return qyResponse;
}
- 效果
没有test3
@ApiModel(参数实体、返回实体信息设置,注释在类上)
- 使用方式
@ApiModel(value = "返回实体",description = "实体描述")
public class QYResponse {
- 效果
@ApiModelProperty(参数实体、返回实体字段设置,注释在字段上)
- 使用方式
@ApiModel(value = "返回实体",description = "实体描述")
public class QYResponse {
@ApiModelProperty(value = "code字段值",name = "code字段名称")
private int code;
@ApiModelProperty(value = "msg字段值",name = "msg字段名称")
private String msg;
}
@Data
@ApiModel(value = "Code参数",description = "描述;用于传递参数")
public class CodeDTO {
@ApiModelProperty(name = "code字段",value = "描述;code参数字段描述")
String code;
@ApiModelProperty(name = "name字段",value = "值是什么")
String name;
}
- 效果
@ApiParam(参数设置,注释在返回参数上)
- 使用方式
public QYResponse test2(@RequestBody @ApiParam(value = "参数值",name = "参数名称") CodeDTO codeDTO){
- 效果