一、元注解
1、@Documented:表示含有此注解的注解应该被Javadoc工具记录,默认注解是不记录的。
2、@Inherited:表示含有此注解的注解可以被子类继承,只能用在类上。
3、@Retention(RUNTIME):表示含有此注解的注解会保留到哪个。 例如:
- SOURCE--只在源代码级别保留,编译时就会被忽略。、
- CLASS--编译时被保留,在class文件中存在,但JVM将会忽略。
- RUNTIME--将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用。
4、@Target({TYPE, METHOD, FIELD, PARAMETER}):表示含有此注解的注解使用范围。
二、Bean类注解
1、@Component:将类标记为一个组件,以Bean的形式注入到Spring容器中。相当于xml配置中的
。bean的ID默认为将类名第一个字母变为小写的字符串。
2、@ComponentScan:会默认扫描与配置类相同的包,将扫描到的@Component类自动注入到Spring容器中,免去写@Bean方法。
3、@Autowired:为属性或方法的形参自动注入bean,默认按类型装配,属于Spring的注解。
4、@Resource:为属性或方法的形参自动注入bean,默认按名称装配,若按名称找不到,则切换按类型装配,属于J2EE的注解。也可以写在类上,表示这是一个bean,而@Autowired不能。
5、@Bean:标记此方法返回一个bean,一般用在@Configuration类中。bean的ID默认和带有@Bean注解的方法名是一样的。
6、@Configuration:标记此类为一个配置类,自动将类中的@Bean下的类注入到Spring容器中。
7、@Controller:声明一个controller类bean。(注入service)
8、@Service:声明一个service类bean。(注入dao)
9、@Repository:声明一个dao类bean。(实现数据访问,常与Hibernate使用)
10、@ConditionOnMissingBean:当bean不存在时,才创建bean,常放在@Bean下面。
11、@Conditional(xxx.class):指定创建bean的条件类,若条件类的matches()返回true则创建此bean。
12、@Primary:指定那个bean为子类中首选的bean。
13、@Qualifier(xxx):指定bean的别名。
14、@Scope(xxx):指定bean的作用域。一共有单例、原型、会话、请求四种作用域,例
如:@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)。
15、@Mapper:使Mapper类接口与Mapper.xml文件相互映射,实现数据访问功能。例如:WallMapper.java接口和WallMapper.xml相对应,从而实现里面的数据访问方法。(实现数据访问,常与Mybatis使用)
16、@MapperScan(xxx):指定扫描Mapper类接口的包。例如:@MapperScan("com.dong.mapper")。
17、@Valid:验证后面的形参是否满足校验类注解的要求。通常用在形参为POJO的对象上。
18、@PathVariable:将URL中占位符参数绑定到控制器处理方法的形参中。例如:URL中的/user/{xxx}通过@PathVariable("xxx") 绑定到操作方法的形参中。
19、@Transactional:声明方法或类中的方法以事务的方式运行。
20、@EnableTransactionManagement:开启类以事务方式运行其中的方法。
三、请求类注解
1、@EnableWebMVC:启用MVC。
2、@RequestParam:指定参数的一些属性,比如required(是否必须)、value(对应请求体中的参数)、defaultValue(默认值)。例如:
@RequestParam(value = "age", required = true, defaultValue = "23") String userAge。
3、@RequestMapping(xxx):指定访问的路径,可用在方法和类上。可以限制路径、请求类型、接收参数、接收请求头,例如:
@RequestMapping(value="/login", method=RequestMethod.POST, params="name", headers="Content-Type:text/html;charset=UTF-8")
4、@GetMapping(xxx):指定接受GET请求及其请求路径。
5、@POSTMapping(xxx):指定接受POST请求及其请求路径。
6、@RequestBody:用来解析content-type不是application/x-www-form-urlcoded类型的请求内容,并自动编码为指定的形参类。
7、@ResponseBody:用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。使用时,返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用。
8、@RequestHeader:可将请求头中的属性值绑定到处理方法的形参中。
9、@CookieValue:获取cookie值,有value、required、defaultValue三个参数。
四、资源类注解
1、@Import(xxx.class):指定需要导入的类。
2、@ImportResource(xxx):指定需要导入的文件。
3、@Profile(xxx):指定使用哪个配置文件。
4、@ActiveProfile(xxx):指定运行时需要激活哪一个配置文件。
5、@PropertySource(xxx):隔离加载配置文件。例如:
@PropertySource("classpath:/com/sound/app/properties")。
五、辅助类注解
1、@Override:指定此方法被子类重写。加上此注解可以确认方法是否写对,若写错会报错。
2、@SuppressWarnings(xxx):屏蔽某些编译时的警告信息。例如:
- @SuppressWarnings("unused") 屏蔽方法或对象从未使用的警告。
- @SuppressWarnings("rawtypes") 屏蔽对象未使用泛型指定类型的警告。
- @SuppressWarnings("deprecation")屏蔽使用了已过时或者不推荐使用的类或方法时的警告。
- @SuppressWarnings("unchecked") 屏蔽未执行类型转换检查的警告。
- @SuppressWarnings("fallthrough") 屏蔽当Switch程序块直接通往下一种情况而没有Break时的警告。
- @SuppressWarnings("path") 屏蔽在类、源文件等路径中有不存在的路径时的警告。
- @SuppressWarnings("serial") 屏蔽当在可序列化的类上缺少serialVersionUID定义时的警告。
- @SuppressWarnings("all") 屏蔽所有情况的警告。
六、测试类注解
1、@RunWith(xxx.class):指定类运行时需要依赖的测试类。
2、@ContextConfiguration(classes=xxx.class):指定需要加载的配置类。
3、@Test:标记测试的方法。
七、切面类注解
1、@AspectJ:标记此类为切面。
2、@Pointcut:声明切点方法。
3、@Before:通过方法会在目标方法调用之前执行。
4、@After:通知方法会在目标方法调用之后执行。
5、@AfterThrowing:通知方法会在目标方法抛出异常后调用。
6、@AfterReturning:通知方法会在目标方法返回后调用。
7、@Around:通知方法会将目标方法封装起来。
8、@EnableAspectJAutoProxy:启用AspectJ自动代理。
八、校验类注解
1、空检查
1)@Null:验证对象是否为null。
2)@NotNull:验证对象是否不为null, 无法查检长度为0的字符串。
3)@NotBlank:检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格。
4)@NotEmpty:检查约束元素是否为NULL或者是EMPTY。
2、Booelan检查
1)@AssertTrue:验证 Boolean 对象是否为 true。
2)@AssertFalse:验证 Boolean 对象是否为 false。
3、长度检查
1)@Size(min=, max=):验证对象(Array,Collection,Map,String)长度是否在给定的范围之内。
2)@Length(min=, max=):验证string的长度是否在给定范围之内。
4、日期检查
1)@Past:验证 Date 和 Calendar 对象是否在当前时间之前。
2)@Future:验证 Date 和 Calendar 对象是否在当前时间之后。
3)@Pattern:验证 String 对象是否符合正则表达式的规则。
5、数值检查。建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为"
"时无法转换为int,但可以转换为Stirng为"",Integer为null。
1)@Min:验证 Number 和 String 对象是否大等于指定的值 。
2)@Max:验证 Number 和 String 对象是否小等于指定的值 。
3)@DecimalMax:被标注的值必须不大于约束中指定的最大值.这个约束的参数是一个通过
BigDecimal定义的最大值的字符串表示。小数存在精度。
4)@DecimalMin:被标注的值必须不小于约束中指定的最小值.这个约束的参数是一个通过
BigDecimal定义的最小值的字符串表示。小数存在精度。
5)@Digits:验证 Number 和 String 的构成是否合法 。
6)@Digits(integer=,fraction=)验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。
7)@Range(min=, max=) 检查数字是否介于min和max之间。例如:
@Range(min=10000,max=50000,message="range.bean.wage")private BigDecimal wage;
8)@Valid:递归的对关联对象进行校验,如果关联对象是个集合或者数组,那么对其中的元素进行递归校验;如果是一个map,则对其中的值部分进行校验。(是否进行递归验证)
9)@CreditCardNumber:信用卡验证。
10)@Email:验证是否是邮件地址,如果为null,不进行验证,算通过验证。
11)@ScriptAssert(lang= , script=, alias=):验证调用的脚步。
12)@URL(protocol=, host=, port=, regexp=, flags=):验证URL。
备注:
1、xxx.class指某个类名。
2、xxx指某个字符串。