发表于: 2017-09-30 20:51:02
1 707
今天完成的事情:
完成了小课堂:
文字内容如下:
一、背景介绍
Spring1.0支持基于XML的配置,Spring2.0新增基于注解的配置,Spring3.0新增基于Java类配置,
Spring4.0新增基于Groovy动态语言配置。
我们学习spring的第一个domo通常是使用XML配置的,而现在我们使用Spring和SpringMVC更多的是采用Annotation的方式。而在网上对于XML和Annotation哪个好用各有说法。那么二者之间有什么区别呢?
二、知识剖析
不管是XML还是注解,其本质都是为Spring容器提供Bean定义的信息。采用基于XML的配置,则Bean的定义信息和Bean实现类本身是分离的;而采用基于注解的配置文件,则Bean的定义信息通过在Bean实现类上标注注解实现。Spring Application Framework的核心是IoC容器。其作用包括对应用程序的对象进行实例化、初始化、装配以及在对象的整个生命周期中提供其他Spring功能。构成应用程序主要部分且由Spring容器进行管理的对象被称为Bean或者POJO。为实例化Bean并指定如何对这些Bean进行装配,需要向Spring容器提供相关信息,所提供的信息被称为配置元数据(configuration metadata)。
Bean的元数据由以下四方面组成:
Bean的实现类;
Bean的属性信息,如数据源的连接数、用户名、密码等;
Bean的依赖关系,Spring根据依赖关系配置完成Bean之间的装配;
Bean的行为配置,如生命周期及生命周期各个过程的回调函数等。
三、常见问题
1.基于XML配置和基于注解配置这两种方法分别适用哪些情况?
2.为什么SpringMVC更倾向于使用注解配置?
四、解决方案
1.基于XML配置和基于注解配置这两种方法分别适用哪些情况?
从客观情况上看:
1.Bean实现类来源于第三方类库,如DataSource、JdbcTemplate等,因为无法在类中标注注解,所以通过XML配置方式较好;
2.命名空间的配置,如aop、context等,只能采用基于XML的配置.
基于注解配置适用情况:
Bean的实现类是当前项目开发的,可以直接在Java类中使用基于注解的配置。
从主观情况上看
XML的优点:
1. XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新编译。
2. 在处理大的业务量的时候,用XML配置应该更加好一些。因为XML更加清晰的表明了各个对象之间的关系,各个业务类之间的调用。同时spring的相关配置也能一目了然。
缺点:
配置文件读取和解析需要花费一定的时间,配置文件过多的时候难以管理,无法对配置的正确性进行校验,增加了测试难度。
Annotation的优点:
1. 在class文件中,可以降低维护成本,annotation的配置机制很明显简单
2. 不需要第三方的解析工具,利用java反射技术就可以完成任务
3. 编辑期可以验证正确性,差错变得容易
4. 提高开发效率
缺点:
1. 如果需要对于annotation进行修改,那么要重新编译整个工程
2. 业务类之间的关系不如XML配置那样容易把握。
3. 如果在程序中Annotation比较多,直接影响代码质量,对于代码的简洁度有一定的影响。
2.回到的题目,为什么SpringMVC更倾向于使用注解配置?
1. SpringMVC框架给出了专用的几个注解,使其层次更加分明
2. MVC层次较为简单,而url映射也十分简单,哪个网址出错可以立即找到其映射类。
六、扩展思考
我们前面看到的基于java的配置是什么?
在CSS中,两个或以上的块元素(可能是兄弟,也可能不是)之间的相邻外边距可以被合并成一个单独的外边距。通过此方式合并的外边距被称为折叠,且产生的已合并的外边距被称为折叠外边距。
处于同一个块级上下文中的块元素,没有行框、没有间隙、没有内边距和边框隔开它们,这样的元素垂直边缘毗邻,则称之为相邻。
八、更多讨论
1.@Autowired和@Resouce有什么区别么
有区别,@Autowired默认按bean类型注入,@Resouce默认按bean名字注入,不写名字但又写上参数时按bean类型注入,什么都没写按bean名字注入
2.@Controller @Service @Reposity 这几个注解有什么区别
为了区分Controller层、Service层和Dao层使用的注解,作用等同于@Component
明天计划的事情:
将静态页面变成动态,使用tiles达到验收的标准
遇到的问题:
1.第一次讲小课堂,节奏掌握的不太好
2.代码实战部分干货量不够,不对应小课堂题目
收获:
对Spring以及Spring相关注解类知识和XML知识得到了一次提升
例如上面所写的@Autowired和@Resouce的区别
@Controller @Service @Reposity 这几个注解有什么区别
以及spring常用的几个注解@Component、@Resouce、@autowired等
对IOC的控制反转、以及bean的本质有了更深入的了解
进度:
任务3开始时间:2017.09.26
预计demo时间:2017.09.30
延期风险:有
理由:看是否遇到棘手的问题,顺利的话明天就能交,有问题的话后天才能交
禅道
http://task.ptteng.com/zentao/project-task-350.html
评论