Spring一些常用注解

导语:最近在做项目的时候,遇到了很多作用类似的注解,但是又不知道准确的区别,于是整理了一些Spring注解,方便以后回顾。(持续更新...)

Spring Bean相关

1. @Controller、@Service、@Repository、@Component

作用: 把类标识成可用于 @Autowired注解自动装配的 bean 的类。

  • @Controller : 对应 Spring MVC 控制层,主要用于接受用户请求并调用 Service 层返回数据给前端页面。
  • @Service: 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
  • @Repository: 对应持久层即 Dao 层,主要用于数据库相关操作。
  • @Component :通用的注解,可标注任意类为 `Spring` 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。

2. @Autowired 和@Resource

作用: 自动导入对象到类中,被注入进的类同样要被 Spring 容器管理比如:Service 类注入到 Controller 类中。

  • @ Resource 按照名称进行匹配 ;@Autowired 按照类型进行匹配
  • @ Resource 是java的一个注解 ; @Autowired 是spring的注解

3. @Configuration

  1. 一般用来声明配置类,可以使用 @Component注解替代,不过使用@Configuration注解声明配置类更加语义化。
@Configuration
public class AppConfig {
    @Bean
    public TransferService transferService() {
        return new TransferServiceImpl();
    }
}

 

 

4. @Scope

声明 Spring Bean 的作用域,使用方法:

@Bean
@Scope("singleton")
public Person personSingleton() {
    return new Person();
}

 四种常见的 Spring Bean 的作用域:

  • singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
  • prototype : 每次请求都会创建一个新的 bean 实例。
  • request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。
  • session : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。

Controller 相关

1. @RestController(组合注解)

  • @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直接填入 HTTP 响应体中,是 REST 风格的控制器。
  • 单独使用 @Controller不加 @ResponseBody的话一般使用在要返回一个视图的情况,这种情况属于比较传统的 Spring MVC 的应用,
  • 对应于前后端不分离的情况。@Controller +@ResponseBody返回 JSON 或 XML 形式数据

2. @RequestMapping(方法上)

作用:可作用与 类 或者 方法。

  • 作用于类,代表类可以处理的url路径。@RequestMapping("/admin/investigationQuestionnaireInfo")
  • 作用于方法,代表可以类+方法的组合url路径。@RequestMapping("test")

tips : 作用于方法可以不加参数

3. @RequestMapping 和 @GetMapping @PostMapping 区别(方法上)

  • 后两者组合注解,@RequestMapping(method = RequestMethod.GET/POST)的缩写
  • @RequestMapping默认都get post都支持

4. @ResponseBody(方法上)

  • 作用:将要返回给前端的java对象数据转为json格式或者xml格式的数据,写入到response对象的body区
  • 不加:
    • 1.通过model返回数据,即视图的形式
    • 2.方法作为前端页面跳转的中介

5.@Requestbody(方法参数)

  • 作用:当前端参数是通过json格式或者xml格式传过来的时候用(ajax提交),会将json格式参数绑定到一个java对象上,且一个方法只能有一个Requestbody
  • 适用场景:当前端传参格式特别复杂,包含嵌套,或者对象数组的时候使用

6.@PathVariable(方法参数)

  • 作用:接收url中占位符{ }的值并绑定到方法的某个参数上,用于获取路径参数
@RequestMapping("show5/{id}/{name}")
    public ModelAndView test5(@PathVariable("id") Long ids ,@PathVariable("name") String names){}

7.@RequestParam(方法参数)

  • 作用:将接收的参数绑定到方法的某个参数上
@RequestMapping
    public ModelAndView test5(@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)){}
  • 用与不用的区别:
    • 用,即能获取url上的参数,又能获取form表单的参数(可设置参数别名,必须与否,默认值)
    • 不用,只能获取url上的参数(可以不传参数,url传参必须与方法参数名一致)

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值