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映射对应示例
<select id="getUserInformation" parameterType="com.github.demo.vo.User" resultMap="userMapper">
select
<include refid="User_Base_Column_List" />
from mo_user t where 1=1
<if test="user.userName!=null and user.userName!=''"> and t.user_name = #{user.userName} </if>
<if test="user.userAge!=null and user.userAge!=''"> and t.user_age = #{user.userAge} </if>
</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被彻底卸载之前。(详见下面的程序实践)