美文网首页
Spring Boot(2)各种注解持续学习更新中

Spring Boot(2)各种注解持续学习更新中

作者: 科学Jia | 来源:发表于2017-08-29 21:55 被阅读152次

听到一句歌词,世界很大,我很渺小。
不知道在另外一个平行时空的我是否怀揣着梦想目标,在努力呢?
希望她在最好的年纪,做最棒的事情。
====================================================

Spring注解@Component、@Repository、@Service、@Controller区别
如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository@Service@Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。 在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进Spring容器中管理。它的作用和在xml文件中使用bean节点配置组件时一样的。

注入方式:

把DAO实现类注入到service实现类中,把service的接口(注意不要service的实现类)注入到Controller(Action)中,注入时不要new 这个注入的类,因为spring会自动注入,如果手动再new的话会出现错误,然后属性加上 @Autowired后不需要getter()和setter()方法,Spring也会自动注入。
即:从DAO(Repository) -> Service -> Controller(Action)

@Service服务层组件,用于标注业务层组件,表示定义一个bean,自动根据bean的类名实例化一个首写字母为小写的bean,
例如Chinese实例化为chinese,如果需要自己改名字则:@Service("你自己改的bean名")。
@Controller用于标注控制层组件(如struts中的action)
@Repository持久层组件,用于标注数据访问组件,即DAO组件
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

在接口前面标上@Autowired和@Qualifier注释使得接口可以被容器注入,当接口存在两个实现类的时候必须指定其中一个来注入,使用实现类首字母小写的字符串来注入,如:

    @Autowired      
   
    @Qualifier("chinese")       
   
     private Man man;    

@PathVariable
通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

    @RequestMapping("/pathV/{pathv}")
    //表示返回JSON格式的结果,如果前面使用的是@RestController可以不用写
    @ResponseBody
    public String getPath(@PathVariable String pathv) {
        return "Hell PathVariable " + pathv;
    }

    //正则匹配
    @RequestMapping("/pathVReg/{regexp:[a-z]{1,2}[0-9]{3,4}}")
    //表示返回JSON格式的结果,如果前面使用的是@RestController可以不用写
    @ResponseBody
    @PathVariable("path")
    public String getRegexPath(@PathVariable("regexp") String pathReg) {
        return "Hello PathVariable " + pathReg;
  }

需要注意的是,如果String pathv这里声明的变量名字跟{pathv}不一致,需要采取下面的方式,即@PathVariable("xxxxname")设定name。

    @RequestMapping("/pathV/{pathv}")
    //表示返回JSON格式的结果,如果前面使用的是@RestController可以不用写
    @ResponseBody
    public String getPath(@PathVariable("pathv") String path) {
        return "Hell PathVariable " + path;
    }

============================================================
2017年8月30日更新@RequestParam
如果有一个url是这样的:http://localhost:8080/AssetOnboard/upLoadUserInfo?user_id=44&user_name=steven&user_score=10.0,你可以用@RequestParam在controller里来绑定参数(例如:user_id)到另外的参数( userId )名称上,这样就可以随意书写参数名称了,不然就要保证request里面的参数名字和方法一致(例如:user_score)

@RequestMapping("/upLoadUserInfo")
    //表示返回JSON格式的结果,如果前面使用的是@RestController可以不用写
    @ResponseBody
    public String upLoadInfo2UserInfo(@RequestParam("user_id") Integer userId, @RequestParam("user_name") String username, float user_score) {
        UserInfo userInfo = new UserInfo();
        userInfo.setId(userId);
        userInfo.setName(username);
        userInfo.setScore(user_score);
        userService.insertUser(userInfo);
        return "Insert Successfully";
    }

参考文献

参数绑定注解@PathVariable@RequestParam@RequestBody@RequestHeader

相关文章

网友评论

      本文标题:Spring Boot(2)各种注解持续学习更新中

      本文链接:https://www.haomeiwen.com/subject/zruadxtx.html