Java注解整理


1. Spring注解
@component、@component(“userDao”):Dao、Service、Controller层类上;类上加此注解,把对象注入到IOC容器(在IOC容器加入的对象名称与类名相同,首字母小写);
@Resource、@Resource(name=“userService”):Dao、Service、Controller层类的属性字段上;表示将IOC容器中已有的对象注入到此字段上;
@Autowired:Dao、Service、Controller层类的属性字段上;将IOC容器中已有的对象自动注入到此字段上;

Spring注解@Autowired和@Resource区别对比
@Resource和@Autowired都是做bean的注入时使用;
@Autowired:是Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入;
@Resource:由J2EE提供,需要导入包 javax.annotation.Resource;默认按照ByName自动注入;@Resource有两个重要的属性:name和type,
而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,
而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略;


@Repository:Dao层类上;把对象注入到IOC容器;
@Service:Service层类上;把对象注入到IOC容器;
@Controller:Controller层类上;把对象注入到IOC容器;
@RequestMapping("/movie"):Controller类上、Controller方法上; 用于指定 url和请求方式,返回页面的 逻辑视图名(页面跳转时使用);
@PostMapping("/movie"):(Controller类上?)Controller方法上; 与@RequestMapping作用类似,用于指定 url,请求方式是 post请求;
@GetMapping("/movie"):(Controller类上?)Controller方法上; 与@RequestMapping作用类似,用于指定 url,请求方式是 get请求;
@PathVariable(“id”) Integer id:Controller类方法的参数上,Restful支持时使用;将方法上@RequestMapping指定的 url中 { }包起来的参数和后面跟的形参绑定(eg:);
@RequestParam(value=“item_id”,required=true,defaultValue=“1”)
Integer id:Controller类方法的参数上,用于参数绑定;如果 request请求参数与 Controller方法中的形参名一致,适配器自动进行参数绑定;如果不一致,使用@RequestParam 注解 value属性 指明请求参数名;required属性 默认为 true,若没有参数则报错;defaultValue属性 设置默认值;
@ModelAttribute(value=“item”) ItemsCustom item:Controller类方法上、方法的参数上;用于方法的参数上,用于参数绑定,表示将请求的 POJO数据放到 model中; 用于方法上,将公用的取数据的方法返回值传到页面,不需要在每个 Controller方法中通过 Model传数据。;
@RequestBody :Controller类方法的参数上;表示将请求的 JSON数据转成 JAVA对象,请求类型是 JSON格式数据;如果不是 JSON格式数据,则无需说明(eg:如下);
@ResponseBody:Controller类方法的返回类型上;将 JAVA对象转成 JSON数据输出;在 Ajax时,用于Controller中相应的方法上,方法可返回 POJO对象和 List集合; 用在方法的返回类型参数前,表示返回即响应 JSON格式数据(eg:如下);
@InitBinder:Controller类中自定义属性编辑方法上;表示添加自定义类型绑定(只可用于一个Controller中,多个 Controller中用时详见自定义参数绑定一节)eg:

【Validation校验器】
@Size(min=1,max=30,message="{items.name.length.error}",groups={ValidateGroup2.class}):实体类中的字段上;message的值根据 properties文件中的 key来得到,当用到分组校验时加 groups属性;
@NotNull(message="{items.createtime.is.notnul}",groups={ValidateGroup1.class}):实体类中的字段上;message的值根据 properties文件中的 key来得到; 在页面中显示错误信息,当用到分组校验时加 groups属性;
器中已有的对象自动注入到此字段上;
@Valid:Controller类中方法的参数上;全部参数的最后面添加参数 (BindingResult bindingResult),传入BindingResult对象,用于获取校验失败情况下的反馈信息;
@Validated:Controller类中方法的参数上;@Validated是@Valid 的一次封装,@Valid不提供分组功能,全部参数的最后面添加参数 (BindingResult bindingResult),传入BindingResult对象,用于获取校验失败情况下的反馈信息;eg:

@Component
@Aspect:切面类上;表示这是一个切面类。
@PointCut(“execution(* .())”):切面类中pointCut方法上;pointCut方法是个空方法;
1. @Before(“execution(public void com.asd.spring.UserDao.save())”):切面类中方法上;此方法在业务代码之前执行;(没用到上面pointCut()方法时,直接写)
2. @Before(“pointCut()”):切面类中方法上;此方法在业务代码之前执行;
@After(“pointCut()”)切面类中方法上;此方法在业务代码之后执行,无论是否出现异常都执行;
@AfterReturning(“pointCut()”):切面类中方法上;此方法在业务代码后执行,若出现异常不执行;
@AfterThrowing(“pointCut()”):切面类中方法上;此方法在业务代码后,出现异常执行(即@AfterReturning与@AfterThrowing 两者不会同时存在);
@Around(“pointCut()”):切面类中方法上;此方法环绕业务代码,有参数joinPoint:joinPoint.proceed();方法proceed()相当于目标对象业务代码中的save();;

@Transactional:(Service层)类上、方法上;表示对应的 Service类或者 Service方法上存在事务(因为事务多在 Service层进行处理);

Spring注解@Autowired和@Resource区别对比
@Resource和@Autowired都是做bean的注入时使用;
@Autowired:是Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入;
@Resource:由J2EE提供,需要导入包 javax.annotation.Resource;默认按照ByName自动注入;@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,
而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略;

@NotEmpty :用于集合类,不能为null,且size>0

@NotNull:不能为null,但可以为empty,没有size的约束

@NotBlank:只用于String,不能为null,且trim()之后size>0

@Validated比@Valid较为好用

posted @ 2024-03-05 16:00  七彩鱼丸  阅读(4)  评论(0编辑  收藏  举报