整理spring、springBoot、springCloud中常用相关注解

1.@FeignClient(name="zjyy-bussiness-core"):

定义在接口上,其中name为后台配置文件中spring.application.name定义的name,代表http://zjyy-bussiness-core/

  用法2:

2.@RestController:注解相当于@ResponseBody + @Controller合在一起的作用

3.@RequestBody:一般用于处理post请求中的body中的值

4.@RequestParam:一般用于处理get请求中的参数

5.@PathVariable:如 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上

6.@CookieValue:可以把Request header中关于cookie的值绑定到方法的参数上。

7.@Transactional(rollbackFor = Exception.class):如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚;注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚。

8. @Param:

@Param注解单一属性时:

@Param注解JavaBean对象时:

dao层示例

public List<user> getUserInformation(@Param("user") User user);

xml映射对应示例

  1. <select id="getUserInformation" parameterType="com.github.demo.vo.User" resultMap="userMapper">  

  2.         select   

  3.         <include refid="User_Base_Column_List" />  

  4.         from mo_user t where 1=1  

  5.             <if test="user.userName!=null  and user.userName!=''">   and   t.user_name = #{user.userName}  </if>  

  6.             <if test="user.userAge!=null  and user.userAge!=''">   and   t.user_age = #{user.userAge}  </if>  

  7.     </select> 

注意:其实@param相当于一个map集合一样,当方法的参数有一个时,完全可以不用这个注解,因为在SQL语句能识别出来就一个,但是要是有多个参数时,这是可以把多个参数放进一个map中在传入方法中,或者用@Param来标记每个参数,这样就可以不用map了

9.@SpringBootApplication:是springboot启动类,包括三个注解,他们的作用分别是:

            @Configuration:表示将该类作用springboot配置文件类,表示这个类中定义了@Bean,会把这个类中bean加载到spring容器中。

            @EnableAutoConfiguration:表示程序启动时,自动加载springboot默认的配置

            @ComponentScan:表示程序启动是,自动扫描当前包及子包下所有类


10.@SpringCloudApplication:包括@SpringBootApplication、@EnableDiscoveryClient、@EnableCircuitBreaker,分别是SpringBoot注解、注册服务中心Eureka注解、断路器注解。对于SpringCloud来说,这是每一微服务必须应有的三个注解,所以才推出了@SpringCloudApplication这一注解集合

11.@Mapper :作用于dao层,@Mapper通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。相当于@Mapper=@Repository+@MapperScane

12.@Repository:作用于dao层,跟@Service,@Compent,@Controller这4种注解是没什么本质区别,都是声明作用,取不同的名字只是为了更好区分各自的功能;如果使用@Repository则需要使用@MapperScan("xxx.xxx.xxx.mapper")进行扫描,然后生成Dao层的Bean才能被注入到Service层中。反过来如下

13.@MapperScan:作用于启动类上,@MapperScan("xxx.xxx.xxx.mapper")进行扫描,如果用了此注解,需要在用到mybatis的配置文件xml装SQL,xml中的namespace指向dao接口,且在dao层可以不用@Repository注解

13.@Resource:如果像远程调用的接口、dao之类接口没有生成bean对象,即没有用@MapperScan注解扫描生成或者没有用                             @Repository生成接口的bean,那么这时候可以直接用@Resource注解生成

                      例如:

                 @Resource
                 private  AuthRemoteClientDao authRemoteClientDao;  //没通过上面两个注解生成bean,注解用resource生成

14.@RequestMapping:


15.@EnableScheduling:启用定时任务,作用于启动类上,@Scheduled(cron = "0 0 1 1 * ?")用于方法上。

16.@Aspect:标记为aop切面类

17.@Pointcut("execution(* com.zjyy.distr.app.mapper..*.*.*(..))"):切点

18.@Around("excudeService()"):环绕通知,在执行目标方法时再执行一些额外的操作

19.@Query:适用于所查询的数据无法通过关键字查询得到结果的查询

20.@Modifying:

21.@Data:使用这个注解可以省去代码中大量的get()、 set()、 toString()等方法;使用 @Data 注解要先引入lombok

22.@ConfigurationProperties:该注解用于读取配置文件中的属性,其中prefix表示前缀;

23.@PostConstruct说明

     被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。

24.@PreDestroy说明

     被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。(详见下面的程序实践)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值