现在的开发都推崇使用注解来进行开发,这样就可以免去XML配置了,学习注解之后就可以更好地理解注解是怎么工作的了。
什么是注解:
注解其实就是代码中的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相对应的处理。
注解其实就是两个作用:
让编译器检查代码
将数据注入到方法、成员变量、类上
为什么要用注解:
传统的方式,我们是通过配置文件(xml文件)来告诉类是如何运行的。但是有了注解技术之后,我们就可以通过注解来告诉类如何运行。
例如:
1、我们以前编写Servlet的时候,需要在web.xml文件配置具体的信息
使用了注解之后,可以直接在Servlet源代码上,增加注解,Servlet就被配置到Tomcat上了。也就是说注解可以给给、方法注入信息。
2、比如我们在编写service层时,需要导入Dao层,还需要编写setter、getter方法。
但是使用了注解之后,我们不需要再写setter、getter方法了。spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
基本注解:
1、重写注解:@Override
如果我们重写父类的方法,就可以看见它了。
@Override是告诉编译器要检查该方法是实现父类的方法,可以帮我们避免一些错误。
比如,我们在实现父类的printWin方法时,把printWin()写错成pntWin()时,那么编译器就会发现该方法并不会实现父类的方法,与注解冲突,于是就会显示错误提示我们。
2、抑制编译器警告注解:@SuppressWarnings
我们可以用它来让编译器不给予我们警告。
比如当我们在使用集合时,如果没有指定泛型,那么会提示安全检查警告
当我们在加上注解之后,那么编译器就不会给我们警告了。
自定义注解基础:
1、标记注解:没有任何成员变量的注解,@Overried就是一个标记注解
2、元数据注解:定义带成员变量的注解。
使用注解:
1、下面有一个add的方法,需要username和age参数,我们通过注解来让该方法拥有这两个变量;
2、我们也可以在声明属性时,给出默认值。
在修饰的时候就不用给出具体值了
3、还有一种特殊的情况,如果注解上只有一个属性,并且属性的名称为value,那么在使用的时候,我们可以不写value,直接赋值给它就行
使用时:
为什么使用注解就可以把变量注入到方法上,是怎么注入的:利用的是反射技术。
步骤:
反射出该类的方法
通过方法得到注解上具体的信息
将注解上的信息注入到方法上
这时要在自定义注解类中加@Retention(RetentionPolicy.RUNTIME),要不就会出现异常
注入对象到方法上:
Person类,定义username和age属性,拥有uername和age的getter和setter方法
PersonDao类,PersonDao类定义了Person对象,拥有person的setter和getter方法
现在我要做的就是:使用注解将Person对象注入到setPerson()方法中,从而设置了PersonDao类的person属性
步骤:
①: 自定义一个注解,属性是和JavaBean类一致的
②:编写注入工具
③:总结一下步骤
其实我们是这样把对象注入到方法中的:
得到想要类中注入的属性
得到该属性的对象
得到属性对应的写方法
通过写方法得到注解
获取注解详细的信息
将注解的信息注入到对象上
调用属性写方法,将已填充数据的对象注入到方法中
把对象注入到成员变量上:
步骤:
1、在成员变量上使用注解
2、编写注入工具