发表于: 2017-12-07 23:41:31
1 809
今天完成的事情:
学习注解
本以为应该是个很简单的问题,然后今天就节省点时间。然后就崩了。
看了一天,也没有了解透彻,知识掌握了部分知识。
以后还是多学习学习。
1.注解开发介绍
Annotation(注解),其实就是对类,方法,属性进行的一种标示,一种注释(注意,这个里注释不是为了让我们开发或维护人员阅读更方便,而是为JVM看呢),通过这些标示,Java虚拟机可以完成这些标示对应的功能。例如使用框架开发时,我们都是通过配置文件进行对象关系组合映射等功能,而通过注解我们可以完全代替配置文件的编写。
(1)Annotation的作用:
编写文档:通过代码里标识的元数据生成文档。
代码分析:通过代码里标识的元数据对代码进行分析。
编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。
(2)JDK内置的几个常用注解:
1)@Override:此注解能够实现编译时检查,当某方法前边添加此注解时,表示此方法为重写父类中的方法。如果此方法不是父类的方法,例如我们本来想重写toString呢,却写成了tostring,则编译无法通过,会提示错误。
2)@Deprecated:此注解是对不应该,或者将要淘汰的方法进行标识,当编程人员使用时就会给予提示。
3)@SuppressWanings:此注解表示去除一些警告,但是里边需要我们制定参数。
4)@interface进行自定义注解的定义。我们可以像@SuppressWanings一样向里边添加参数。比如利用@Target注解来指定其使用范围;@Documented表示此注解是否文档化,就是当我们生成文档时,是否生成进去;@Inherited标注继承,控制此注释是否会影响到子类等等。
2.Spring注解开发
Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射。通常情况下我们会在xml配置文件中进行action,service,dao等层的声明,然后并告知框架我们想要的注入方式,然后在类中声明要组合类的get,set方法。而通过Spring框架中注解的运用也就主要是解决这类问题的。而框架中另一个核心知识AOP,一种面向横切面的方法编程,在程序中一般都是进行一次设置就可以的,所以都还放在配置文件中。例如声明式事物的设置,一次设置,后边就不用管了,所以这个没有必要使用注解进行简化。
(1)首先需要在配置文件中增加命名空间的和约束文件
(2)开启Spring的注解功能,这样Spring环境才会进行指定位置的扫描,进行类之间的关联组合
(3)声明注解类,让Spring框架可以识别
1)类的分层注解,由于我们后台开发都是分为三层进行开发的,所以Spring框架提供了三种对于不同层的注解方式:
控制层:@Controller
服务层:@Service
持久层:@Repository
默认情况下使用注解声明的Bean对象id名称为:类名称的首字母小写,一般不需要我们进行设置,如果想要设置时,例如我们指定的是实现类,而名字指向了接口,直接添加value属性即可:@Service(value="name"),当然value是可以省略的。
Spring框架还为我们提供了代替上边三个分层注解的通用注解:@Component.当然提倡大家使用分层注解更好一些,区分层次比较明确。
2)自动装配功能的实现对象之间的组合关系,在属性前边指定下边的注解:
@Autowired : 采用类型的方式完成自动装配 : byType
@Resource : 采用名称+类型的方式完成自动装配 : byName +byType
另外Spring提供的两种注解的自动装配功能,属性不需要声明set,get方法也可以完成组合功能,这是非常方便的。
3.注解开发的优缺点
优点:1)开发速度快;2)编译期间容易发现错误的出处 。
缺点:1)管理分散,基本每个类上都有;2)扩展功能时,没有遵循OCP开发原则。
4.配置文件开发的优缺点
优点:1)遵循OCP开发原则,修改配置文件即可进行功能扩展;2)集中管理对象和对象之间的组合关系,易于阅读。
缺点:1)开发速度相对较慢;2)编译时很难检查出错误,运行中的错误很难定位,调试难度较大。
明天计划的事情:
完成任务八。在死亡的边缘。
遇到的问题:
小课堂收到的问题收获:
1.注解换一下有效吗?
Spring框架提供的是三种对于不同层的注解方式,所以他知识一种注解方式。另外还有同样注解。所以换名称是有效的,他知识一种标示,主要是看注解存在与那个类上,他就会把那个类注入的容器中。
2.注解的使用场合是啥?还是所有情况都能用
并不是所有情况都能用。像AOP,数据源等是需要配置文件配置的。
3.采用注解的话是否算是侵入式编程
如果说算,是因为加注解,则需要依赖注解的类型,并且注解也会编译到class中。
如果说不算,是因为注解可以和框架主体分离,依赖注解不代表依赖框架。而且从逻辑上讲,注解属于元数据,不影响执行(如果不反射也不自行解析字节码,jvm不会管注解)
4.约定大于配置,对于这句话你怎么理解
所谓的约定优于配置就是指在程序开发过程中我们约定好一些规则可以使我们更少的进行配置和代码编写。
5.解释一下命名空间的作用
收获:
大概了解了注解,虽然用了很久了。
评论