自己总结一些开发中用到的注解
文章目录
- Spring注解
- 1、@Controller
- 2、@RequestMapping(“url地址”)
- 3、@ResponseBody注解:
- 4、@ResponseParam(“id”) 注解
- 5、@Resource注解:
- 6、@Repository注解:
- 7、@Service注解:
- 8、@Mapper注解:
- 9、@PathVariable(“id”):
- 10、@Configuration注解:定义spring框架的补充配置,一般用于过滤器
- 11、@bean注解:
- 12、@Autowired与@Qualifier注解
- 13、@component (把普通pojo实例化到spring容器中,相当于配置文件中的)
- spring请求的几种方式(面试/需要高版本的浏览器)
- 3、 @Async异步
- Spring boot注解:
- Springmvc注解:
Spring注解
1、@Controller
使一个普通的Java类变成一个控制器类能被spring框架识别,在里面写控制器方法
@RestController
将此Java类中的所有方法的返回值的类型转换为json类型
2、@RequestMapping(“url地址”)
将一个地址和一个方法建立映射关系(客户端的地址与控制器类建立映射)
@RequestMapping(value=“url地址”, method=RequestMethod.post) 只接受post方式的请求
例如:
@RequestMapping(“/bank/del.do?id=”)
public String DEL(int id){ //String代表一个路径,将请求转发到此页面
return “remove.jsp”
}
3、@ResponseBody注解:
在方法的返回值类型前添加,返回值在前端自动将Java类型数据转化为json类型
例如: public @ResponseBody List print(){}
4、@ResponseParam(“id”) 注解
加在方法的参数前,强制访问此页面时必须添加id参数(自动完成类型转换)
5、@Resource注解:
自动查找和自动装配 ,简称IoC 控制反转,依赖注入(你需要什么,spring会主动提供给你)
spring框架会自动查找对象实例,如果找不到的话就自动创建你需要的类
6、@Repository注解:
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.
在spring框架中注册,加载到实现类的前面
7、@Service注解:
用于注解业务实现类
8、@Mapper注解:
mybatis提供的注解,当引用mybatis框架时底层的DAO变成一个XML文件为了使spring识别DAO,所以在DAO的接口类前添加
9、@PathVariable(“id”):
从请求路径中去一个名为id变量(路径中/{id})
rest full风格的url:将以前url中?+参数的形式改为/{参数值}
10、@Configuration注解:定义spring框架的补充配置,一般用于过滤器
11、@bean注解:
一般用在Configuration注解的类中,在项目中注解一个组件
12、@Autowired与@Qualifier注解
当注解在属性或者类名上时,一般这两个注解一块使用
- @Autowired默认是根据类型进行注入的,因此如果有多个类型一样的Bean候选者,则需要限定其中一个候选者,否则将抛出异常
- @Qualifier限定描述符除了能根据名字进行注入,更能进行更细粒度的控制如何选择候选者,这个注解也可以用在参数上,表明具体的那个类
13、@component (把普通pojo实例化到spring容器中,相当于配置文件中的)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
spring请求的几种方式(面试/需要高版本的浏览器)
四种请求方式
-
@GetMapping
说明: @RequestMapping(method = RequestMethod.GET)的简写
作用:对应查询,表明是一个查询URL映射 -
@PostMapping
说明:@RequestMapping(method = RequestMethod.POST)的简写
作用:对应增加,表明是一个增加URL映射 -
@PutMapping
说明:@RequestMapping(method = RequestMethod.PUT)的简写
作用:对应更新,表明是一个更新URL映射 -
@DeleteMapping
说明: @RequestMapping(method = RequestMethod.DELETE)的简写
作用:对应删除,表明是一个删除URL映射
与请求相关的几种注解
-
@Controller
@Controller 用来响应页面,表示当前的类为控制器。用在控制层
-
@RestController
@RestController 是@ResponseBody和@Controller的结合
表明当前类是控制器且返回的是一组数据,不是页面 -
@Autowired
这个注解的作用是将其他的类,接口引入,类似于之前的类的初始化等,用这个注解,类中或接口的方法就可以直接调用了。
-
@RequestMapping
当前台界面调用Controller处理数据时候告诉控制器怎么操作
作用:URL映射(前台调用接口的路径)
3、 @Async异步
-
简介
在Spring中,基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作。
分为不带参数的异步调用;带参数的异步调用;调用返回Future的异步线程 -
@Async调用中的事务处理机制
在@Async标注的方法,同时也适用了@Transactional进行了标注;在其调用数据库操作之时,将无法产生事务管理的控制,原因就在于其是基于异步处理的操作。 那该如何给这些操作添加事务管理呢?可以将需要事务管理操作的方法放置到异步方法内部,在内部被调用的方法上添加@Transactional. 例如: 方法A,使用了@Async/@Transactional来标注,但是无法产生事务控制的目的。 方法B,使用了@Async来标注, B中调用了C、D,C/D分别使用@Transactional做了标注,则可实现事务控制的目的。 -
配合使用@EnableAsync
@EnableAsync
在启动类或者Control类加上 @EnableAsync 注解
@EnableAsync注解的意思是可以异步执行,就是开启多线程的意思。可以标注在方法、类上。@Async所修饰的函数不要定义为static类型,这样异步调用不会生效
如下:
@SpringBootApplication
@EnableAsync
public class Application
{
public static void main( String[] args )
{
SpringApplication.run(Application.class, args);
}
}
或者:
@EnableAsync
@RestController
public class HelloController {
@Autowired
TestAsyncService testAsyncService;
}
Spring boot注解:
1、@JsonSerialize(using = ToStringSerializer.class):
spring boot 注解可以让返回的json数据都为字符串
2、@JsonIgnore:
在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
Springmvc注解:
1、@RequestParam(value = “page”, required = false, defaultValue = “1”)
规定前端向后台发送请求时必须要有某个参数,value可以省略,此注解的作用相当于requset.getParameter(“name”)
2、@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss” ):
页面将数据传到后台,是以字符串的形式。所以时间格式会出错。加上此注解,后台可解析时间格式的字符串。
3、@JsonFormat(pattern = “yyyy-MM-dd HH:mm”, timezone=“GMT+8”):
@JsonFormat 默认是标准时区的时间,多出现少8小时的情况 使用时,按需求加上时区 北京时间 东八区 timezone=”GMT+8” 作用:后台的时间 格式化 发送到前台