注解
-
元注解
注解的注解:@Retention、@Target、@Document、@Inherited
@Retentiond:定义注解的保留策略,RetentionPolicy.SOURCE:在源码
.CLASS在字节码,运行时无效,.RUNTIME在字节码。反射可以获取
生命周期SOURCE<CLASS<RUNTIME,前者能用,后者也能。
@Target:定义注解的目标:
@Target(ElementType.TYPE) //接口、类、枚举、注解 ;@Target(ElementType.FIELD) //字段、枚举的常量;@Target(ElementType.METHOD) //方法;@Target(ElementType.PARAMETER) //方法参数;@Target(ElementType.CONSTRUCTOR) //构造函数;@Target(ElementType.LOCAL_VARIABLE)//局部变量;@Target(ElementType.ANNOTATION_TYPE)//注解;@Target(ElementType.PACKAGE) ///包
@Document:说明注解被包含在Javadoc中
@Inherited:说明子类可以继承父类的该注解。 -
自定义注解
Public @interface xx{} java.lang.annotation -
常用注解
@Override:重写标志,标示覆盖父类的方法
@Deprecated: 已过期,表示方法时不建议使用的。
@Suppvisewarnings: 压制告警,抑制告警 -
注解与反射的结合
定义注解保留策略属于Runtime,@Retention(RetentionPolicy.RUNTIME);
反射操作:
GetMethod:获取类的Public方法,GetDeclaredMethod:获取所有方法
GetField:获取Publice属性,GetDeclaredField:获取所有属性。
顺序:
定义注解类
根据反射获取类中拥有注解的成员属性:Field field = MyBean.class.getDeclaredField(“value”);
获取注解值:MyAnnotation myAnnotation = field.getAnnotation(MyAnnotation.class)。 -
Spring常用注解
@Component:所有受管理组建的通用形式,一般不用,泛指
@Controller:表现层Bean,Action,控制器
@Service:业务层Bean
@Repository:数据访问层Bean
@Scope:作用域
@Lazy(true):延迟初始化
@PostConstruct:指定初始化方法
@PreDestory:销毁方法
@Resource:默认按名称装配:不是Spring的 是JDK的。
@DependsOn:定义bean的初始化以及销毁的顺序。
@Primary:多个Bean候选,首先带有这个,优先级。
@Autowired:默认按类型装配,
@Qualifler:和@Autowired配合使用,多个实例时按名称装配
@PostConstruct:初始化注解
@PreDestroy:摧毁注解
@Async:异步方法调用
@ComponentScan:扫描包
@Configuration:声明当前类为配置类Bean
@Aspect:声明一个切面(类)使用
@After:在方法执行之后执行(方法上)
@Before:在方法执行之前执行
@RequestMapping:映射
@RequestParam:将请求的参数绑定到方法中的参数上
@PathVariable:用于方法修饰方法参数,会将方法参数变成可供使用的URL变量。
@RequestBody:参数应该绑定在HTTP请求Body上。
@RsetController:控制器实现了REST的API
@Produces:表示类或方法的返回类型
@Transactional:声明这个Service的所有方法都需要事物管理。