Spring boot 注解

Controller相关注解

@RestController 告诉spring 这是一个RestController 服务,用来注解类

@RequestMapping 指定当前方法,可以使用一个什么样的rest API来访问

  1. @RequestMapping(value = "/hello")使用/hello 来访问方法
  2. @RequestMapping(value = "/hello",method= RequestMethod.GET) 使用/hello 且是GET类型的方法才能访问到这个方法

@RequestParam 指定用户在请求当前方法时,请求中必须要有一个参数,

  1. public String query(@RequestParam String username) 用户在请求中必须要有一个名为username 的参数
  2. public String query(UserQueryCondition condition)Springboot 会自动组装用户的参数为一个对象,这个对象就是事先定义好的查询条件对象

参数相关注解

@PathVariable 将url中的一个片段映射到参数上

	//id是用户的传参,使用了@PathVariable将用户请求中的参数映射到了参数上
	@RequestMapping(value="/user/{id:\\d+}")//使用正则表达式约束用户输入的参数
	@JsonView(User.DetailView.class)//用户在这个查询中可能需要密码字段,这个时候使用详细视图给用户展示密码
	public User getInfo(@PathVariable String id){
		User user = new User();
		user.setUsername("tom");
		return user;
	}

@JsonView注解

	public class User{

		//在DTO对象中声明对象来实现显示不同的视图
		public interface SimpleView{};
		//继承了SimpleView视图,会显示所有的Simple View中的字段
		public interface DetailView extends SimpleView{};
		private String username;
		private String password;
		//在简单视图中显示
		@JsonView(SimpleView.class)
		public String getUsername(){
			return this.username;
		}
		//在详细视图中显示
		@JsonView(DetailView.class)
		public String getPassword(){
			return this.password;
		}
	}


	@RestController
	@RequestMapping("/user")//类下的所有方法在访问的时候,前面都要添加/user上下文
	public class UserController{
		
		@GetMapping//请求中带的参数全部都封装到方法参数中
		@JsonView(User.SimpleView.class)//显示简略信息,不将用户密码返回给用户
		public List<User> query(UserQueryCondition condition){
			List<User> reuslt = Lists.newInstance();
			result.add(new User());
			result.add(new User());
			result.add(new User());
			return result;
		}

		@GetMapping("{id:\\d+}")//带一个Id参数,取url中的一个字段片段
		@JsonView(User.DetailView.class)//显示详细信息,将用户的用户密码返回给用户
		public User getInfo(String id){
			User user = new User();
			user.setUsername("tom");
			return user;
		}

		//当用户使用POST方法对/user发请求的时候,此方法会去响应用户请求
		@PostMapping
		public User create(@RequestBody User user){//@RequestBody 将用户上传的Json参数绑定到Java方法参数,如果没有这个注解,Java方法将不能接受到这个请求的传参
			User user = new User();
			user.setId(1);
			return user;
		}
	}

对日期的处理方法

后台存储日期的时候,可能会被多个客户端调用,手机,浏览器,还有一些其它的设备,不同的设备对日期的格式要求又是不一样的。这个时候如果在应用后台采用了一种固定格式的时间。那就会对各个设备不友好。所以前台和后台存储的时间应该是一种通用的格式。时间戳就是一种很好的方式.


值校验


		public class User{
	
			//在DTO对象中声明对象来实现显示不同的视图
			public interface SimpleView{};
			//继承了SimpleView视图,会显示所有的Simple View中的字段
			public interface DetailView extends SimpleView{};
			@NonBlank //用户名字段不能为空
			private String username;
			private String password;
			//在简单视图中显示
			@JsonView(SimpleView.class)
			public String getUsername(){
				return this.username;
			}
			//在详细视图中显示
			@JsonView(DetailView.class)
			public String getPassword(){
				return this.password;
			}
		}
		
		@PostMapping
		@JsonView(SimpleView.class)
		//@Valid注解和BindingResult类配合使用,如果用户上传的参数不正确,那么相关的错误信息都会被封装到BindingResult类中,
		public User create(@Valid @RequestBody User user,BindingResult errors){
			if(errors.hasError()){
				//打印错误的具体信息
				errors.getAllErrors().stream().forEach(error->System.out.println(error.getDefaultMessage()));
			}
			User user = new User();
			user.setId(1);
			return user;
		}

Hibernate Validator

注解类型
注解释义
@NotNull值不能为空
@Null值必须为空
@Pattern(regex)字符串必须匹配正则表达式
@Size(min=.max=)集合的数量必须在min和max之间
@CreditCardNumber(ignoreNonDigitCharacters=)字符串必须是信用卡号(按照美国标准校验)
@Email字符串必须是Email地址
@Length(min=,max=)字符串的长度必须在min和max之间
@NotBlank字符串必须有字符
@notEmpty字符串不为null,集合必须有值
@Range(min=,max=)数字必须大于等于min,小于等于max
@SafeHtml字符串是安全的Html代码
@URL字符串是合法的URL
@AssertFalse值必须是False
@AssertTrue值必须是True
@DecimalMax(value=,inclusive=)值必须小于等于(inclusive=true)value属性指定的值,可注解字符串类型
@DecimalMix(value=,inclusive=)值必须大于等于(inclusive=true)value属性指定的值,可注解字符串类型
@Digits(integer=,fraction=)数字格式检查,integer指定整数部分,fraction指定小数部分
@Future值必须是个未来的日期
@Past值必须是个过去的日期
@Max(value=)值必须小于等于value指定的值,不可注解字符串
@Min(value=)值必须大于等于value指定的值,不可注解字符串

自定义注解实现校验

	//定义一个注解
	@Target({ElementType.METHOD,ElementType.FILED})
	@Retention(RetentionPOlicy.RUNTIME)
	@Constraint(validateBy = MyConstraintValidate.class)//java自带的校验注解,使用什么样的校验逻辑
	public @interface MyConstraint{
		
	}

	//实现一个接口
	public class MyConstraintValidate implements ConstraintValidator<MyConstraint,Object>{
		public void initlize(MyConstraint constraintAnnotation){

		}
		//真正的校验逻辑
		public boolean isValid(Object value ,ConstraintValidatorContext context){
			return false;
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码ge寂寞

谢谢老板,老板大气,老板入大厂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值