博客已迁移到CSDN《https://blog.csdn.net/qq_33375499》
java注解
概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法
概念比较抽象,其实注解就想一个标签,用于标注程序的一个非程序代码
java中常见的注解
JDK中自带注解(编译时注解)
@Override:重写,在实现类继承、接口的实现等会出现该注解
@Deprecated:表示该方法已经过时了,过时的意思就是可以使用,但不推荐使用
@Suppvisewarnings:忽略警告,忽略java编译时的warning
Spring中的注解
@Autowired:可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。
@Service:首先,在applicationContext.xml文件中加一行:
<context:component-scan base-package="com.hzhi.clas"/>
加上这一行以后,将自动扫描路径下面的包,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了,类似的还包括@Component、@Repository、@Controller。
@Repository:将数据访问层 (DAO 层 ) 的类标识为 Spring Bean
注解的分类
按照运行机制分:
源码注解->注解只在源码中存在,编译成.class文件就不存在了.
编译时注解->注解在源码和.class文件中都存在.
运行时注解->在运行阶段还起作用,深知会影响运行逻辑的注解.
按照来源分:
java自带注解
第三方注解
自定义注解
元注解:给注解的注解
自定义注解
@Target({ElementType.METHOD,ElementType.TYPE}) // 注解作用域:ElementType. COUSTRUCTOR(构造方法声明)、FIELD(字段声明)、 //LOCAL_VARIABLE(局部变量声明)、METHOD(方法声明)、PACKAGE(包声明)、 //PARAMETER(参数声明)、TYPE(类,接口)
@Retention(RetentionPolicy.RUNTIME) // 生命周期:SOURCE(只在源码显示,编译时会丢失)、CLASS(编译时会记录到class中,运行时 //忽略)、RUNTIME(运行时存在,可以通过反射读取)
@Inherited // 允许子继续
@Documented // 生成javadoc时会包含注解
public @interface Description {
String desc();
String author();
int age() default 18;
}
1、使用@interface关键字定义注解
2、成员以无参无异常的方式声明
3、可以用default为成员指定一个默认值
4、成员类型是受限制的,合法的类型包括原始类型及String,Class,Annotation,Enumeration
5、如果注解只有一个成员,则成员名建议取名为value(),在使用时可以忽略成员名和赋值号(=)
6、注解类可以没有成员,没有成员的注解称为标识注解