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

原文地址:https://www.cnblogs.com/kaibindirver/p/15175460.html