提示:以下是本篇文章正文内容,下面案例可供参考
一、@Data注解的引用(前提是plugins安装了lombok插件)
注解作用:自动生成get、set代码。
搜索lombod plugin安装重启idea后引入dependence
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
完成即可使用!
二、@Test注解的使用
pom引入dependence
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
使用事例
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {DemoApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class Test {
@Resource
private RestTemplate restTemplate;
@org.junit.Test
public void sendMessageTX() throws ClientException {
}
}
三、@Reference、@Resource、@Autowired注解
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入
@Reference是dubbo的注解,@Resource是spring的
@Reference也是注入,他一般注入的是分布式的远程服务的对象,需要dubbo配置使用
总结区别:@Reference注入的是分布式中的远程服务对象,@Resource和@Autowired注入的是本地spring容器中的对象。
四、@RestController、@Controller、@ResponseBody注解
@RestController注解相当于@ResponseBody + @Controller合在一起的作用
// 一般用于接口 或 前后端分离
1.如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp,html页面,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是return 里的内容。
也可以通下面方法返回页面具体
@RequestMapping(value="/tologin", method=RequestMethod.GET)
public ModelAndView login(){
ModelAndView mv = new ModelAndView("index");
return mv;
}
// 一般用于后台页面
2.如果需要返回到指定页面,则需要用 @Controller 配合视图解析器 InternalResourceViewResolver 才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
。
五、@Configuration 、@Bean、@ComponentScan注解
1.@ComponentScan:@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component,没错@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中.
2.@Configuration:在配置类上添加@Configuration,注解告诉了Spring这是一个配置类,相当于是一个xml文件。
3.@Bean:添加@Bean注解,相当于在xml文件里面写了一个bean标签,通常和@Configuration一起使用。
在某个类上使用@Component注解,表明当需要创建类时,这个被注解的类是一个候选类。就像是举手。
总结:@ComponentScan用于扫描指定包下的类。就像看都有哪些举手了。
@Configuration的注解类标识这个类可以使用Spring IoC容器作为bean定义的来源。
@Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象应该被注册为在Spring应用程序上下文中的bean。
六、@controller 、@service、@repository、@component 注解
1、@controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层
2、@service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理
3、@repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.
@Repository注解类作为DAO对象(数据访问对象,Data Access Objects)
这些类可以直接对数据库进行操作有这些分层操作的话,代码之间就实现了松耦合,代码之间的调用也清晰明朗,便于项目的管理;
@Repository注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的
<bean id="" class=""/>)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、 @Services等的时候),我们就可以使用@Component来标注这个类。
可以理解为 @Configuration是随容器启动开始加载的,始终存在的单例模式。 @Component是使用一次即实例化一次
七、@PathVariable、@requestBody、@SuppressWarnings注解
1.@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
ajax添加格式: content-type:"application/json charset=utf-8",
public void login(@requestBody String userName,@requestBody String pwd)
2、@PathVariable("xxx")
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)
@RequestMapping("show5/{id}/{name}")
public ModelAndView test5(@PathVariable("id") Long ids ,@PathVariable("name") String names){
3、@SuppressWarnings注解主要用在取消一些编译器产生的警告对代码左侧行列的遮挡,有时候这会挡住我们断点调试时打的断点。
1. @SuppressWarnings("unchecked") [^ 抑制单类型的警告]
2. @SuppressWarnings("unchecked","rawtypes") [^ 抑制多类型的警告]
3. @SuppressWarnings("unchecked") [^ 抑制所有类型的警告]
@RequestMapping(value=”user/{id}/{name}”)
九、@SpringBootApplication注解
1.SpringBootApplication启动时会默认扫描主类*当前包及子包*,如果需要扫描主类当前包外的其他包或不扫描当前包下的特定包或类,可通过下列属性实现:
@SpringBootApplication(excludeName=("com.xxx.wx.service.UserService"), scanBasePackages=("com.xxx"))
十、@EnableCaching、@EnableAsync、@EnableScheduling、@Primary
@EnableCaching 开启缓存
@EnableAsync 开启异步注解
@EnableScheduling 开启定时任务
@Primary 存在两个相同的bean时候,使用且未指定时候默认使用的
十一、@RequestParam与@RequestBody注解
十二、@Cacheable、@CacheEvict、@CachePut
@Cacheable标注的方法表述如果缓存存在则不执行方法,缓存不存在则执行方法并将结果保存在缓存中,unless排除什么情况不进行缓存
@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。
CacheEvict是用来标注在需要清除缓存元素的方法或类上的。当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作。
@CacheEvict可以指定的属性有value、key、condition、allEntries和beforeInvocation。
其中value、key和condition的语义与@Cacheable对应的属性类似。即value表示清除操作是发生在哪些Cache上的(对应Cache的名称);
key表示需要清除的是哪个key,如未指定则会使用默认策略生成的key;condition表示清除操作发生的条件。