SSM常用注解及其含义

1 篇文章 0 订阅
1 篇文章 0 订阅
声明:本博文参考了一些博主的博文,这里表示抱歉。自己也稍微整理一下,供自己学习记录,如有错误请大佬们指正,谢谢!

作者:借我丹青妙笔

1. @Controller、@RestController、@Service、 @Repository

@Controller: 用于标识处理器类,作用于控制层(controller层)。它注解的类进行前端请求的处理,转发,重定向。包括调用Service层的方法。

@RestController: 相当于@ResponseBody + @Controller合在一起的作用,与@Controller相比我更常用@RestController一些。

@Service: 作用于业务逻辑层(service层)。

@Repository: 作用于持久层(dao层)。

@RequestMapping:请求到处理器功能方法的映射规则,可定义到类和方法。常用参数:value、method 。可将@RequestMapping标签定义到类名处或方法名处窄化路径。该注解有六个属性:

1、 value, method;
value:     指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method:  指定请求的method类型, GET、POST、PUT、DELETE等;
2、 consumes,produces;(不常用)
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3、 params,headers;(不常用)
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

当@RequestMapping("/list")只带有一个参数,参数默认为value。相当于

@RequestMapping(value = "/list")。

此时我们访问下面代码中的list()方法的路径为:localhost:8080/项目名/teacher/list



@RestController
@RequestMapping("/teacher")
public class TeacherController {

    @Resource
    private ITeacherService teacherService;

    @RequestMapping("/list")
    public Map<String,Object> list(Teacher teacher){
        Map<String,Object> map = new HashMap<>();
        List<Teacher> teachers = teacherService.listTeacher(teacher);
        map.put("msg","查询成功");
        map.put("code",0);
        map.put("data",teachers);
        return map;
    }


}

Spring 4.3 引入了方法级注解的变体,也被叫做 @RequestMapping的组合注解。组合注解可以更好的表达被注解方法的语义。它们所扮演的角色就是针对 @RequestMapping 的封装,而且成了定义端点的标准方法。

例如,@GetMapping是一个组合注解,它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。

方法级别的注解变体有如下几个:

  • @GetMapping (常用于查询方法)
  • @PostMapping (常用于增加方法)
  • @PutMapping (常用于修改方法)
  • @DeleteMapping (常用于删除方法)

@Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

2. @Autowired和@Resource的区别

@Resource:是用来实现依赖注入的,此注解是byName自动注入的,属于Spring的注解     org.springframework.beans.factory.annotation.Autowired

@Autowired:也是用来实现依赖注入的,但是此注解是byType自动注入的,不属于Spring的注解,JDK1.6支持的注解。javax.annotation.Resource

共同点:

  • spring都支持
  • 都作用在字段和setter方法上

不同点:

  • @Resource属于Spring的注解,@Autowired是JDK1.6支持的注解
  • @Resource不允许找不到bean的情况,而Autowired允许(@Autowired(required = false))
  • @Resource默认通过name查找,而@Autowired默认通过type查找

总结:@Autowired自动注解,一个类,俩个实现类,Autowired就不知道注入哪一个实
现类,而@Resource有name属性,可以区分。(推荐使用@Resource,但如果每个接口只对应一个实现类就无所谓用哪一个)。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

借我丹青妙笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值