zoukankan      html  css  js  c++  java
  • sproot 注解学习记录 (含给实现类起名字的方法)

    常用注解解说: https://www.bilibili.com/video/BV1y7411j78K?p=2&spm_id_from=pageDriver

    返回前端字符

    接收前端参数    @RequestParam   --------------get请求

    uri例子:   /parm2/?id=333

    defaultValue 为默认值  defaultValue = "id的默认值"
    required  为是否可为空 required = false  可以为空前端不传值

    接收前端参数 @PathVariable

    url例子: /path/2

    第一个方法不写路径,那么可以直接请求访问:

    --------post请求

     后计: 后面发现 user 可以随便给 他只是形参,然后把它传到对应要调用的方法

    注意: User这个类 我是用了 lombok  、给类加了有参构造和无参构造  (超哥说 请求的时候 参数会自动映射到这个类 然后拿到对应的变量)

    lombok注解 可以看这个 https://blog.csdn.net/u011308294/article/details/78627560

    @ToString
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class User {
        int age;
        String name;
    
    }
    

      

    例子:

     参考: https://www.cnblogs.com/kaibindirver/p/14961473.html

     另外一篇 https://www.cnblogs.com/kaibindirver/p/15394513.html

    使用中问题记录

    UserController.java

    @RestController
    @RequestMapping("BB" )
    public class  UserController {
        //        新增数据
        @Qualifier("ee")
        @Autowired
        private UserServer userServer;
    
        @GetMapping("{id}")
        public User AA(@PathVariable("id") int id){
            return  userServer.get();
            }
    
    }
    

    UserServer.java

    public interface UserServer {
        public default User get(){
            User user= new User(18,"张三");
            System.out.println("get User"+user);
            return user;
        }
    
        public User getById(int id);
    }
    

    UserServerimpl.java

    @Service("ee")
    public class UserServer2impl implements UserServer {
        @Override
        public User getById(int id) {
            User user= new User(id,"张三");
            System.out.println("get User"+user);
            return user;
        }
    }

    超哥说 impl层是实现业务逻辑的

    UserServerimpl 中  @Service("ee")  可以给这个实现类命名为ee

    然后控制层中 

    @Qualifier("ee")
    @Autowired
    private UserServer userServer;

    另外一种写法是用
    @Resource(name="ee")
    private UserServer userServer;

    如果实现类没有给他另起名字,那么就是 @Resource(name="userServerimpl") 注意首字母要小写


    Qualifier 是指定哪个实现类
    因为用Autowired是从bean里面找注册的类,然后下面变量用的是接口层 UserServer ,他回自动去找 接口层对应的实现类有哪些,实现类只有一个 就不用@Qualifier("ee")指定系统去找实现的类,如果接口有1个以上的实现类就要加上

    @Qualifier("ee")指定要使用那个实现类了

    然后再调用接口层 get()方法,他会自动去找重载实现接口get()方法的实现类

    如果接口层要有默认的方法 要加 default 关键词

    @Value()注解的使用

    可以获取配置文件里面的变量

    application.properties配置文件

    #自定义变量
    local.username=lucax

    contro层里面可以调用
    @Value("123")
    private String username;
    @Value("${local.username}")
    private String username;




    后记: 

    @ResponseBody

      @ResponseBody,一般是使用在单独的方法上的,需要哪个方法返回json数据格式,就在哪个方法上使用,具有针对性。

    @RestController

      @RestController,一般是使用在类上的,它表示的意思其实就是结合了@Controller和@ResponseBody两个注解。

    接收请求头信息去这里看看

    https://www.cnblogs.com/kaibindirver/p/15398815.html

    请求ip啥的 下面这篇文章有

    https://blog.csdn.net/qq_41767337/article/details/89144733

  • 相关阅读:
    java中Array/List/Map/Object与Json互相转换详解
    推荐几款开源的js日期控件
    12款优秀的 JavaScript 日历和时间选择控件
    12款优秀的 JavaScript 日历和时间选择控件
    StringTokenizer(字符串分隔解析类型)
    StringTokenizer(字符串分隔解析类型)
    javascript中的undefined 和 not defined
    javascript中的undefined 和 not defined
    6.静态函数库设计
    5. Linux应用程序地址布局
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/15175460.html
Copyright © 2011-2022 走看看