Spring mvc

2019-07-30  本文已影响0人  好大一只鹏

1.@service,@Resource,@Component,@Repository,@Autowired的应用

@Component------------------------泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。(Component-------成分; 组分; 零件)

@Repository------------------------(注解类作为DAO对象(数据访问对象,Data Access Objects),这些类可以直接对数据库进行操作 )

@Autowired-----------------------(自动绑定)

@Resource-----------------------

@Service----------------------------用于标注业务层组件(我们通常定义的业务处理层就用这个)

@Controller-------------------------用于标注控制层组件(如struts中的action)

这几个注解的作用相同:都是为实现所在类(即组件)的bean的转化,然后可以在容器中调用。然后从名字上的作用就是可以明确各个层次和层次的作用。
那么什么时候用@resource,@Autowaired,当需要在某个类中定义一个属性,并且该属性是一个已存在的bean,要为该属性赋值或注入时在该属性上一行使用@Resource(name="xxx"),或者@Autowired(本质上一样的只是方式不一样),相当于为该属性注入一个名称为xxx的bean。

@Autowired 与@Resource的区别:
1.@Autowired与@Resource都可以用来装配bean.都可以写在字段上,或写在setter方法上。
2.@Autowired默认按类型装配(这个注解是属业spring的也就是ByType),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false),如果我们想使用名称装配
3.@Resource(这个注解属于J2EE的),默认安装名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

@RequestBody   ------------------------------注解@RequestBody接收的参数是来自requestBody中,即请求体
@ResponseBody
    @RequestMapping(value = "/addUser", method = RequestMethod.POST)
    public String addUser(@RequestBody User user) {
      return "";
例如这个例子,接受一个User类的请求json数据

@RequestParam ------------------------------------- 注解@RequestParam接收的参数是来自requestHeader中,即请求头。

@GetMapping(value = "/getNormalCount")
    @ResponseBody
    public User getNormalCount(@RequestParam(required = true) String userName){
        return mSignIn.normalCount(userName);
    }

@PathVariable -------------------------------注解使用@PathVariable接收参数,参数值需要在url进行占位,前端传参的URL:

 @GetMapping(value = "/getNormalCount/{userName}")
    @ResponseBody
    public User getNormalCount(@PathVariable String userName){
        return mSignIn.normalCount(userName);
    }


上一篇下一篇

猜你喜欢

热点阅读