答:
`@Service`注解是标注在实现类上的,因为`@Service`是把`spring`容器中的`bean`进行实例化,也就是等同于`new`操作,只有`实现类`是可以进行`new`实例化的,而`接口`则不能,所以是加在`实现类`上的。
@RequestParam
和 @PathVariable
注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam
是从request里面拿取值,而 @PathVariable
是从一个URI模板里面来填充
@RequestParam
看下面一段代码:
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
根据上面的这个URL,你可以用这样的方式来进行获取
public String getDetails(
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
...
}12345
@RequestParam
支持下面四种参数
@PathVariable
这个注解能够识别URL里面的一个模板,我们看下面的一个URL
http://localhost:8080/springmvc/hello/101?param1=10¶m2=201
上面的一个url你可以这样写:
@RequestMapping("/hello/{id}")
public String getDetails(@PathVariable(value="id") String id,
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
.......
}
区别很明显了
@PathParam
这个注解是和spring的pathVariable
是一样的,也是基于模板的,但是这个是jboss包下面的一个实现,上面的是spring的一个实现,都要导包
lombok注解在java进行编译时进行代码的构建,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码,这对于JAVA开发人员是很重要的,在出现lombok之后,对象的创建工作更提供Builder方法,它提供在设计数据实体时,对外保持private setter,而对属性的赋值采用Builder的方式,这种方式最优雅,也更符合封装的原则,不对外公开属性的写操作!
@Builder声明实体,表示可以进行Builder方式初始化,@Value注解,表示只公开getter,对所有属性的setter都封闭,即private修饰,所以它不能和@Builder现起用
一般地,我们可以这样设计实体!
@Builder(toBuilder = true)
@Getter
public class UserInfo {
private String name;
private String email;
@MinMoney(message = "金额不能小于0.")
@MaxMoney(value = 10, message = "金额不能大于10.")
private Money price;
}
@Builder注解赋值新对象
UserInfo userInfo = UserInfo.builder()
.name("zzl")
.email("bgood@sina.com")
.build();
@Builder注解修改原对象的属性值
修改实体,要求实体上添加@Builder(toBuilder=true)
userInfo = userInfo.toBuilder()
.name("OK")
.email("zgood@sina.com")
.build();
答:是因为你的主键没有设置自动增长;
5.前端发送插入数据到数据库请求,后端接收是用一个对象接收,返回信息插入成功,但是数据库没有真正插入?
答:
出现种情况目前我碰到的有这么一种:
就是在接收前端发送过来数据的时候,后端的对象接收如果不加@RequestBoby注解,不会提示报错,但是数据库不会真的提示增加,加上这个注解,就会成功增加
原文:https://www.cnblogs.com/wangwei0514/p/13538472.html