@RestController
描述:等同于@Controller + @ResponseBody
@RequestBody
描述:用来接收前端传递给后端的json字符串中的数据(请求体中的数据的)
@ResponseBody
描述:将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据
@RequestMapping
描述:注解来将请求URL映射到整个类上,或某个特定的方法上
@Component
描述:把对象加载到Spring容器中,最基础的存在,很多的注解都是继承它的,只有一个属性值,默认值是“”。
@Service
描述:一般用于Service层的注解,继承了Component组件,本质上一样,方便做业务范围区分而已。
@Repository
描述:作用于Dao层的注解,很多经常用JPA的同学都清楚这个东西,与Service本质上一样,业务领域上区别而已。
@Controller
描述:作用在控制器上的注解,与Service一样,业务领域区分。
描述:@RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @PathVariable 是从一个URI模板里面来填充
URL:http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
@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){
.......
}
URL:http:localhost:9405/client/add/account/123456
@PostMapping(value = "/client/add/{entity}/{entityId}")
public String add(@PathVariable("entity") String entity,
@PathVariable("entityId") String entityId);
@RequestParam 支持下面四种参数
defaultValue 如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值
name 绑定本次参数的名称,要跟URL上面的一样
required 这个参数是不是必须的
value 跟name一样的作用,是name属性的一个别名
描述:lombok提供了很多注解,在编译时候生成java代码,代替了手工编写一些简单的代码,使程序员可以关注更重要的实现。
@Getter / @Setter
@ToString
例如:@ToString(exclude = {"id"}, includeFieldNames = false)
@Data
例如:@Data 注解相当于 Getter + Setter + ToString + @RequiredArgsConstrutor
@Builder
描述:用于快速构建对象
@AllArgsConstructor:全部参数构造函数
@NoArgsConstructor:无参数构造函数
@RequiredArgsConstructor:NoNull参数和常量构造函数
描述:注解用来忽略某些字段,这个注解一般用在我们要忽略的字段上。
@JsonIgnore//默认是true,与@JsonIgnore(true)同义,序列化时忽略该属性
private Integer id;
@JsonIgnore(value = false)//序列化时不忽略该属性
private String name;
描述:将这个注解写在类上之后,就会忽略类中不存在的字段。
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonIgnoreProperties({"address", "sex"})
@Getter
@Setter
public class User {
private Long id;
private String name;
private String address;
private String sex;
}
@Test
public void JsonIgnoreTest() throws Exception{
User user = new User();
user.setId(1L);
user.setName("Tom");
user.setAddress("北京市 朝阳区");
user.setSex("man");
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(user));
}
描述:
<!-- joda-time -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
</dependency>
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
描述:@JsonFormat注解是一个时间格式化注解,比如我们存储在mysql中的数据是date类型的,当我们读取出来封装在实体类中的时候,就会变成英文时间格式,而不是yyyy-MM-dd HH:mm:ss这样的中文时间,因此我们需要用到JsonFormat注解来格式化我们的时间。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.2</version>
</dependency>
/**
* 生日
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date birthday;
pattern:日期格式;timezone:时区
描述:
描述:@PostConstruct注解好多人以为是Spring提供的,其实是Java自己的注解。@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。
通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:
Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)
@PostConstruct
public void someMethod(){}
或者
public @PostConstruct void someMethod(){}
表示此方法已废弃、暂时可用,但以后此类或方法都不会再更新、后期可能会删除,建议后来人不要调用此方法。
此注解可用于类上、方法上、属性上。通常在给定此注解后,应该在方法注释中同样说明:废弃此方法后的代替方法是哪个、处理原逻辑代替方案是什么 、本身不打算代替,而是直接清除的,则最好给出会清除此方法的具体代码版本号 。
@Deprecated(since = "1.2", forRemoval = true)
since: 指定已注解的API元素已被弃用的版本
forRemoval: 表示在将来的既定版本中会被删除,应该迁移 API
SerializedName
的主要作用:属性重命名,可以将json
中的属性名转为我们自己自定义的属性名其次@SerializedName
注解提供了两个属性,上面用到了其中一个value
,别外还有一个属性alternate
:接收一个String
数组alternate
数组中出现任意一个属性名都可以转换为自定义的属性,如果出现多个则以最后一个为准。
@Getter
@Setter
@ToString
public class User {
@SerializedName(value = "uname", alternate = {"newName", "name"})
private String userName;
}
public class SerializedName {
public static void main(String[] args) {
Gson gson = new Gson();
String str = "{\n" + "\"uname\":\"lihuan\"\n" + "}";
User user = gson.fromJson(str, User.class);
System.out.println(user.getUserName());
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。