发表于: 2017-09-30 20:51:02

1 706


今天完成的事情:

完成了小课堂:

文字内容如下:

一、背景介绍

    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




返回列表 返回列表
评论

    分享到