您现在的位置是:首页 >学无止境 >Spring Boot注解的使用细节网站首页学无止境
Spring Boot注解的使用细节
@RequestParam:
1、在前端传入多个相同的属性时,若使用数组接收,则无需使用@RequestParam注解。若使用集合接收,则须使用@RequestParam来绑定参数。
2、当前端发送的属性名与服务端接收的不一致时,可以使用@RequestParam(接收的属性名=“前端发来的属性名”)
来绑定接收,括号里面有个required属性,默认为true,若为true,则表示绑定的属性不可为空,不然会报错。若为false则不会报错。
@DateTimeFormat:
@DateTimeFormat里面有个pattern属性,用于指定前端传来的日期时间格式,如:
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
@RequestBody
@RequestBody可以将前端发送来的json格式的参数封装进一个实体类对象中
@PathVariable
用于获取路径变量,并绑定给形参。有时候前端请求的路径不是写死的,比如是和id相关的,每个人的id不同,访问路径也不同,就需要设置路径变量,变量是多少,路径就是多少,如:
http://localhost:8080/pathParam/521
http://localhost:8080/pathParam/125
后面的521和125就是不同的路径变量
@RequestMapping
@RequestMapping
当注解在类上时,其路径为父路径,该类中的方法的路径为子路径。如:类的注解为@RequestMapping(“/parent”),该类某个方法的注解为@RequestMapping(“/get”),则该方法的请求路径为…/parent/get
路径参数:/{变量}
@RequestMapping("/pathParam/{id}")
public String pathParam(@PathVariable Integer id){
System.out.println(id);
return "OK";
}
当传入多个路径参数时:
http://localhost:8080/pathParam/521/cxl
http://localhost:8080/pathParam/125/陈熙龙
@RequestMapping("/pathParam/{id}/{name}")
public String pathParam(@PathVariable Integer id,@PathVariable String name){
System.out.println(id+":"+name);
return "OK";
}
@RestController
@RestController = @Controller + @ResponseBody
@ResponseBody
@ResponseBody 使用在Controller方法上或者类上 ,将方法返回值直接响应,如果返回值类型是 实体对象/集合/数组,将会转换为JSON格式相应
@Component(建议使用其衍生注解:@Controller,@Service,@Repository,用于区分哪个层的)
@Component(value = “bean名”),value可以省略,其三个衍生注解同样可以指定bean名,bean的名字默认为首字母小写的类名。注:声明控制器bean只能使用@Controller
常用于DAO层和Service层的类上,将当前类交给IOC(控制反转)容器管理,成为IOC容器中的bean,也可用于Dao层和Service层之外的其他类
如:
@Component
public class EmpService {
@Autowired
private EmpDao empDao;
@Controller
@Component的衍生注解,标注在Controller/控制器类上,作用与@Component一样,用的少,@RestController包含@Controller
@Service
@Component的衍生注解,标注在Service/业务类上,作用与@Component一样
@Repository
@Component的衍生注解,标注在DAO/数据访问类上,作用与@Component一样(由于与mybatis整合,用的少)
@ComponentScan
用于扫描bean的,未被扫描到的bean即为不存在于IOC容器,隐式的配置在启动类上,默认的扫描范围是启动类所在包及其子包 。@ComponentScan({{“指定要扫描的包”,“…”}}),一旦指定,就得额外显式声明默认范围
@Autowired
常用于Service层与Controller层分别声明的DAO层接口属性和Service层接口属性上,程序运行时,IOC容器会提供该类型的bean对象,并赋值给该变量 DI-依赖注入,默认是按照类型注入
如:
public class EmpController {
@Autowired
private EmpService empService;
@Primary,@Qualifier
由于@Autowired注解是按照类型注入的,一旦同一个类型的bean有多个,就不知道注入哪个,会报错。
@Primary,@Qualifier 就是为了解决这个问题,
@Primary可以指定bean的优先级,类在使用@Autowired的同时加上@Primary,就会优先注入此类的bean.
@Qualifier可以声明要注入bean的名字,类在使用@Autowired的同时加上@Qualifier,就会优先注入此bean,@Qualifier(“名字”)。
@Resource
@Autowired注解默认是按照类型注入的,而@Resource是按照bean名字来注入的,@Resource(name=“bean名”),可以替代@Autowired,此注解是jdk提供的,而@Autowired是Spring框架提供的