1、@Retention
说明:Reteniton的作用是定义被它所注解的注解保留多久,一共有三种策略。
SOURCE
被编译器忽略CLASS
注解将会被保留在Class文件中,但在运行时并不会被VM保留。这是默认行为,所有没有用Retention注解的注解,都会采用这种策略。RUNTIME
保留至运行时。所以我们可以通过反射去获取注解信息。
例子:@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
2、@Target
说明:Target通过ElementType来指定注解可使用范围的枚举集合
取值 | 注解使用范围 |
METHOD | 可用于方法上 |
TYPE | 可用于类或者接口上 |
ANNOTATION_TYPE | 可用于注解类型上(被@interface修饰的类型) |
CONSTRUCTOR | 可用于构造方法上 |
FIELD | 可用于域上 |
LOCAL_VARIABLE | 可用于局部变量上 |
PACKAGE | 用于记录java文件的package信息 |
PARAMETER | 可用于参数上 |
例子:@Target({ java.lang.annotation.ElementType.TYPE })
3、@Documented
说明:Documented 注解表明这个注解应该被 javadoc工具记录. (默认情况下,javadoc是不包括注解的)
例子:@Documented
4、@Configuration
说明:类似于xml文件中@Beans
例子:
@Configuration
public class BookStoreDaoConfig{
@Bean public UserDao userDao(){ return new UserDaoImpl();}
@Bean public BookDao bookDao(){return new BookDaoImpl();}
}
5、@Import
说明:@Import注解就是之前xml配置中的import标签,可以用于依赖第三方包中bean的配置和加载,支持导入普通的java类,并将其声明成一个bean
例子:@Import(User.class)
6、@NoRepositoryBean:
说明:一般用作父类的repository,有这个注解,spring不会去实例化该repository。
例子:@NoRepositoryBean