现在都是倡导注解式开发,更方便不用写bean.xml配置文件
首先自己写一个自定义注解使用一下
@Target(value = {ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface common {
String value();
}
我们来解析一下这个注解
首先是 public @ interfence common(){} 前面是标准的注解写法,common是自己起的名字
@Target 是元注解,表示这个类是注解的注解,@Target()里面要填写一个数组,ElementType.有多个值,表示这个注解可以使用在哪里。可以使用在类上,可以使用在方法上
@Retention(RetentionPolicy.RUNTIME)---->保留性策略,不同的值会导致注解保留在不同的时间段,runtime保证在运行时还可以有该注解,使得注解可以被反射
String 属性的类型 value()属性的值,我们可以在引用注解的时候给赋值
如果属性名是value ,可以省略
我们在准备一个类,并且在这个类上面使用我们自定义的注解
@common(value = "100w张花票",name = "绘梨衣")
public class role {
}
然后我们在主方法中,通过反射机制读取role类,在读取common这个注解类,在获得value和name的值
public static void main(String[] args) throws ClassNotFoundException {
// 通过反射机制读取注解 获得--->org.example.role
Class<?> roleClass = Class.forName("org.example.role");
// 判断类上是否有 common这个注解类
if (roleClass.isAnnotationPresent(common.class)){
// 获取common这个类
common common= roleClass.getAnnotation(common.class);
// 访问注解属性
System.out.println(common.value());
System.out.println(common.name());
}
}
先通过反射机制获得 roleClass类,在判断类中是否有common注解类,在get注解类,在获得值并且输出得到结果如下
100w张花票
绘梨衣
因为可以获得值,那么我们就可以在之后通过注解给实例化对象注入值,而不用在写配置文件了。