想知道SpringBoot 常用注解都有哪些?哪个兄弟可以告知一下呢?
@Configuration
把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
@Lazy(true)
表示延迟初始化。
@Service
用于标注业务层组件。
@Controller
用于标注控制层组件
@Repository
用于标注数据访问组件,即DAO组件。
@Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Scope
用于指定scope作用域的(用在类上)。
@PostConstruct
用于指定初始化方法(用在方法上)。
@PreDestory
用于指定销毁方法(用在方法上)。
@DependsOn
定义Bean初始化及销毁时的顺序。
@Primary:
自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常。
@Autowired
默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("userService") 存在多个实例配合使用
@Resource
默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
@PostConstruct
初始化注解。
@PreDestroy
摧毁注解 默认 单例 启动就加载。
@Async
异步方法调用。
1.路径变量:路径变量使用@PathVariable注解,@PathVariable注解可以一个一个参数来接收,也可以直接使用一个map来进行接收,注意写法的区分。
@RestController
public class ParamController {
/*路径变量*/
@GetMapping("/pathValue/{id}/{name}")
public Map pathValue(@PathVariable("id") Integer id,
@PathVariable("name") String name,
@PathVariable Map pv){
Map map=new HashMap<String,Object>();
map.put("id",id);
map.put("name",name);
map.put("pv",pv);
return map;
}
}
<!--创建前端进行测试-->
<a href="pathValue/50/小猪">路径变量</a>
可以看到使用map和一个一个的传参数,得到的结果是一样的。
2.获取请求头:获取请求头使用@RequestHeander注解,有不了解请求头的小伙伴可以去
/*获取请求头*/
@GetMapping("/heand")
public Map getHeand(@RequestHeader("User-Agent") String userAgent,
@RequestHeader Map ua){
Map map=new HashMap<String,Object>();
map.put("userAgent",userAgent);
map.put("ua",ua);
return map;
}
创建一个html文件测试一下
<!--获取请求头-->
<a href="/heand">获取请求头</a></br>
可以看到使用map和使用一个参数其实都可以获取到对应的请求头数据。
3.获取请求参数:获取请求参数使用@RequestParam注解,参数不必多说大家应该很了解,就是跟在连接后面使用问号隔开的参数。和上面的一样,请求参数也可以使用map来统一获取。
/*获取请求参数*/
@GetMapping("/param")
public Map getParam(@RequestParam("id") String id,
@RequestParam("name") String name,
@RequestParam Map rp){
Map map=new HashMap<String,Object>();
map.put("id",id);
map.put("name",name);
map.put("rp",rp);
return map;
}
创建一个html测试一下
<!--获取请求参数-->
<a href="/param?id=001&name=小猪">获取请求参数</a></br>
可以看到和上面的一样,map和单个获取的结果也是一样的。
4.获取cookie值:不知道什么是cookie的小伙伴可以去Cookie介绍去了解了解。cookie就不能用map来获取了,但是cookie有专门的实体类,实体类里面可以获取到很多信息,话不多说直接上代码。
/*获取cookie值*/
@GetMapping("/cookie")
public Map getCookie(@CookieValue("_seeyon") String _seeyon,
@CookieValue("_seeyon") Cookie cookie){
Map map=new HashMap<String,Object>();
map.put("seeyon",_seeyon);
map.put("cookie",cookie.getName()+"===>"+cookie.getValue());
return map;
}
简单创建一个html测试一下
<!--获取Cookie-->
<a href="/cookie">获取Cookie</a>
5.获取请求体:不了解请求体的可以去这里了解了解HTTP请求报文,请求体只有post请求才能拥有,get请求是没有请求体的。请求体的获取相对简单,一个参数就可以获取到。
/*获取请求体*/
@PostMapping("/body")
public Map getBody(@RequestBody String content){
Map map=new HashMap<String,Object>();
map.put("content",content);
return map;
}
前端可以通过Form标签来创建请求体,具体可以去前端发送请求体的几种方式 了解一下,创建一个html测试一下
<!--获取请求体-->
<form action="/body" method="post">
账号:<input type="text" name="user">
密码:<input type="password" name="pwd">
<input type="submit" value="登入">
</form>
6.获取request域属性:获取request域属性使用@RequestAttribute注解,该注解可以获取到传过来的request域里面的数据。
/*获取request域属性*/
@GetMapping("/forWard")
public String getForword(HttpServletRequest request){
request.setAttribute("id",123);
request.setAttribute("name","小猪");
return "forward:/ra";
}
@ResponseBody
@GetMapping("/ra")
public Map getRa(@RequestAttribute("id") Integer id,
@RequestAttribute("name") String name){
Map map=new HashMap<String,Object>();
map.put("id",id);
map.put("name",name);
return map;
}
这里直接用两个接口来测试