[Spring]~Spring常用注解

目录

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 (缓存)

缓存使用参考
缓存使用参考2

  • 添加缓存
    @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){
  • 效果
    在这里插入图片描述
    在这里插入图片描述

Json(jackson常用注解

@JsonIgnore(单字段序列化控制)

@JsonIgnoreProperties(类级序列化控制)

@JsonIgnoreType(该类作为别的类的属性时忽略序列化)

@JsonProperty(字段映射名称)

@JsonPropertyOrder(序列化时字段排序)

@JsonInclude(不序列化空字段)

@JsonBackReference和@JsonManagedReference(解决对象中存在双向引用导致的无限递归)

@JsonFormat(反序列化时,时间格式问题)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值