Springboot

Springboot

Springboot常用注解

1、主配置类常用注解

(1)@SpringBootApplication
Spring boot的主配置类,Spring boot的启动类

@SpringBootApplication是一个复合注解,包含了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan这三个注解,大多数情况下,这3个注解会被同时使用,基于最佳实践,这三个注解就被做了包装@SpringBootApplication注解。

@SpringBootConfiguration
标注当前类是配置类

会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名 继承自@Configuration。

@EnableAutoConfiguration
自动配置的注解

自动配置的注解,根据我们添加的组件jar来完成一些默认配置 我们做微服时会添加spring-boot-starter-web这个组件jar的pom依赖,这样配置会默认配置springmvc 和tomcat

@ComponentScan
扫描当前包及其子包下被@Component,@Controller,@Service,@Repository

扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。 等价于context:component-scan的xml配置文件中的配置项

(2) @ServletComponentScan
filter的实现,用在Spring boot的启动类

Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册,这样通过注解servlet ,拦截器,监听器的功能而无需其他配置,所以项目中使用到了filter的实现,用到了这个注解。

(3) @MapperScan(“dao路径”)
整合Mybatis,用在Spring boot的启动类	@mapper
(4) @EnableScheduling
允许schedul定时任务
(5) @EnableCaching
使用缓存
(6) @EnableTransactionManagement
//开启事务注解支持

2、单元测试常用注解

@RunWith(SpringJUnit4ClassRunner.class)、(SpringRunner.class)
测试类,让测试运行于Spring测试环境。

SpringRunner 继承了SpringJUnit4ClassRunner,没有扩展任何功能;使用SpringRunner,名字简短而已

@SpringBootTest
Springboot环境下测试
@Test
junit单元测试,单元测试方法上		
@Before
预加载,测试方法前		
@WebAppConfiguration
web应用测试

3、Controller常用注解

@RestController
用于Controller标识,@Controller 和@ResponseBody的结合

@Controller 表明这个类是一个控制器类,和 @RequestMapping 来配合使用拦截请求,如果不在method中注明请求的方式,默认是拦截get和post请求。这样请求会完成后转向一个视图解析器。但是在大多微服务搭建的时候,前后端会做分离。所以请求后端只关注数据处理,后端返回json数据的话,需要配合 @ResponseBody 注解来完成。

@GetMapping、PostMapping、PutMapping、DeleteMapping
rest风格
普通风格Rest风格
@RequestMapping(value=“”,method = RequestMethod.GET)@GetMapping(value =“”)
@GetMappingGet请求
@PostMappingPost请求
@PutMapping订单确认
@DeleteMapping取消订单
@Autowired
按类型自动注入

4、Restful之swagger

<!-- swagger是当前最好用的Restful -->
 <dependency>
     <groupId>io.springfox</groupId>
     <artifactId>springfox-swagger2</artifactId>
     <version>${swagger2.version}</version>
 </dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>${swagger2.version}</version>
</dependency>
@Api(value = “订单Controller”, tags = {“订单Controller”})
value - 字段说明,description - 注释说明这个类
@ApiOperation(value = “订单确认接口”)
在restful风格方法上配合使用
@ApiOperation(value = "订单取消接口")
@DeleteMapping(value = "/order/{orderId}")
作用范围API使用位置
对象属性@ApiModelProperty用在参数对象的字段上
协议集描述@Api用在Conntroller类上
协议描述@ApiOperation用在controller方法上
Response集@ApiResponses用在controller方法上
Response@ApiResponse用在@ApiResponses里面
非对象参数集@ApilmplicitParams用在controller方法上
非对象参数描述@ApiImplicitParam用在@ApiImplicitParams的方法里边
描述返回对象的意义@ApiModel用在返回对象类上

4、配置文件相关

@Value("${spring.datasource.druid.url}")
注入配置文件中的值		
@ImportResource @Import @PropertySource
用来导入自定义的一些配置文件

@ImportResource(locations={}) 导入其他xml配置文件,需要标准在主配置类上。

导入property的配置文件 @PropertySource指定文件路径,这个相当于使用spring的标签来完成配置项的引入。

@import注解是一个可以将普通类导入到spring容器中做管理

@EnableAsync(proxyTargetClass = true)
异步代理,构建异步线程池
@Configuration
配置类
@Bean(“analysisExecutor”)
相当于<bean></bean>,标注在方法上,方法返回值就是bean类型,bean的id默认为方法名,可以通过给@bean注解加value属性值改变id。
@Aspect
切面,事务
@Scope(“prototype”)
bean的作用范围,多例,httpclientConfig
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800,redisFlushMode = RedisFlushMode.ON_SAVE, redisNamespace = “dscSession”)
redissession 默认30分钟失效
@EnableWebMvc
用于spring mvc 配置类,启用springmvc
@EnableSwagger2
restful风格,使用Swagger2

5、dao

@Param(“ids”) Integer[] ids, @Param(“userId”
mapper接口中有多个参数

6、异常处理

@ControllerAdvice
全局异常处理
全局数据绑定
全局数据预处理
@ExceptionHandler(BindException.class)
1、@ExceptionHandler不需要写在目标方法上,而是写在通知处理方法上
2、@ExceptionHandler自动拦截所设置的异常  作用范围这个controller,
---这种情况一般定义个父类,然后每个controller继承即可

7、lombok插件使用

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
@Data
首先在idea中安装lombok插件
@Data : 注解在类上, 
就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,
注解后在编译时会自动加进去
@NoArgsConstructor、 @Getter、 @Setter
使用后创建一个无参构造函数、getter、setter
@AllArgsConstructor
使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数
@Builder
关于Builder较为复杂一些,Builder的作用之一是为了解决
在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦,
在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数,

8、监控

@Component
@ConditionalOnProperty(prefix = “dsc”, name=“ticketWatcherMaster”, havingValue = “true”)
监控转换队列是否有超时ticket,如果超时自动补偿ticket
@Scheduled(cron = “0 0/2 * * * ?”)
定期监控,补偿超时的ticket,2分钟执行一次,延迟60秒启动
/*"0 0 12 * * ?" 每天中午十二点触发 "0 15 10 ? * *" 每天早上10:15触发 "0 15 10 * * ?"
每天早上10:15触发 "0 15 10 * * ? *" 每天早上10:15触发 "0 15 10 * * ? 2005" 2005年的每天早上10:15触发
	"0 * 14 * * ?" 每天从下午2点开始到2点59分每分钟一次触发 "0 0/5 14 * * ?" 每天从下午2点开始到2:55分结束每5分钟一次触发
	"0 0/5 14,18 * * ?" 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 "0 0-5 14 * * ?"
每天14:00至14:05每分钟一次触发 "0 10,44 14 ? 3 WED" 三月的每周三的14:10和14:44触发 "0 15 10 ?
        * MON-FRI" 每个周一、周二、周三、周四、周五的10:15触发 "0 15 10 15 * ?" 每月15号的10:15触发 "0 15
        10 L * ?" 每月的最后一天的10:15触发 "0 15 10 ? * 6L" 每月最后一个周五的10:15触发 "0 15 10 ? *
        6L" 每月最后一个周五的10:15触发 "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月最后一个周五的10:15触发
        "0 15 10 ? * 6#3" 每月的第三个周五的10:15触发*/
@WebListener
启动监听器 web监听

事务通知

@Pointcut(value = “execution(* com.yozo.dsc.web….(…))”)
切点
@AfterReturning(value = “webRequest()”)、
后置通知
@Around(value = “getFileHeaderBOByHead()”)
环绕通知
@Before(value = “onlineConvert() && args(domainBo,dscOnlineParamBo)”)
前置通知
线程池
@PostConstruct
初始化邮箱线程池

MQ

@RocketMQMessageListener(topic = MQConstant.ConvertFinishMqTopic, consumerGroup = “${rocketmq.consumer.group}”, consumeMode = ConsumeMode.CONCURRENTLY, messageModel = MessageModel.CLUSTERING)
RocketMQ监听

redis

@ConditionalOnBean(RedisConfig.class)
@Qualifier(“dscRedisTemplate”)
@Service(“redisService”)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值