发表于: 2017-12-18 22:31:01

1 581


一、今天完成的事情:


 1、早上把面向对象的内容匆匆过了一遍,为下午继续任务做准备


 2、在师兄的建议下,决定先做task1-19,之后再回头做步骤18和17


 3、了解了spring,知道了它是什么,是用来干什么的,也知道在学习它之前应该做好怎样的知识储备

   

     (1)Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。


    (2)需要提前储备的知识:

轻量级(Lightweight)

    轻量级的形容是相对于一些重量级的容器(如EJB容器)来说的,Spring的核心包在文件容量上只有不到1MB的大小,而使用Spring核心包所需要的资源负担也是很小的,您甚至可以在小型设备中使用Spring的核心包。

 

非入侵性(No intrusive)

    框架原来的用意是提供一个架构的实现,让开发人员可以在基于框架的基础上,快速地开发出遵循架构的所需的应用程序,然而有些框架一旦被使用,应用程序就与框架发生了依赖,例如大量使用了框架的API,或直接继承API的某些类型等,都会使应用程序组件与框架发生依赖,而无法从框架中独立出来,更别说当中的组件可以直接重用到另一个应用程序之中。

 

    Spring的目标之一是实现一个非侵入性(No intrusive)框架,希望让应用程序几乎感受不到框架的存在,减低应用程序在框架移植时的负担,进一步增加应用程序组件的可重用性(Reusability),简单地说,使用Spring的话,应用程序中某些组件可以直接拿到另一个应用程序或框架之中直接使用。

 

容器(Container)

    Spring提供容器功能,容器可以管理对象的生命周期、对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称、如何产生(Prototype方式或Singleton方式)、哪个对象产生之后必须设定成为某个对象的属性等,在启动容器之后,所有的对象都可以直接取用,不用编写任何一行程序代码来产生对象,或是建立对象与对象之间的依赖关系。

 

    换个更直白的说明方式:容器是一个Java所编写的程序,原先必须自行编写的程序以管理对象关系,现在容器都会自动帮您作好。

 

IoC(Inversion of COntrol)

    Spring最重要的核心概念是Inversion of Control,中文常译为“控制反转”,更具体的另一个名词是Dependency Injection,中文常译为“依赖注入”;使用Spring,您不必自己在程序代码中维护对象的依赖关系,只需要在配置文件中加以设定,Spring核心容器会自动根据配置将依赖注入指定的对象。

 

AOP(Aspect-oriented programming)

    Spring最被人重视的另一方面是支持AOP(Aspect-oriented programming)的实现,然而AOP框架只是Spring支持的一个子框架,说Spring框架是AOP框架并不是一个适当的描述,人们对与AOP的关注反映至Spring上,使得人们对于Spring的关注集中在它的AOP框架上,虽然有所误解,但也突显了Spring的另一个令人关注的特点。

 

    举个实际的例子来说明AOP的功能之一,假设您有个日志(Logging)的需求,您可以无须修改任何一行程序代码,就可以将这个需求加入至原先的应用程序之中,而若您愿意,也可以在不修改任何程序的情况下,将这个日志功能移除。

 

    Spring的IoC容器功能与AOP功能的实现是其重心所在,在Spring下实现了持久层、MVC Web框架以及各种企业服务的API封装,它们的实现有些依重于Spring的IoC容器与AOP功能,Spring的这些子框架或封装的API功能彼此可以独立,也可以结合其他的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案。


    3、SPring的两大核心IOC和AOP


  

      面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。

但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须在两个类的方法中都加入日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这些重复的代码统一起来。

       也许有人会说,那好办啊,我们可以将这段代码写在一个独立的类独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。 

        一般而言,我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。

这样看来,AOP其实只是OOP的补充而已。OOP从横向上区分出一个个的类来,而AOP则从纵向上向对象中加入特定的代码。有了AOP,OOP变得立体了。如果加上时间维度,AOP使OOP由原来的二维变为三维了,由平面变成立体了。从技术上来说,AOP基本上是通过代理机制实现的。 

AOP在编程历史上可以说是里程碑式的,对OOP编程是一种十分有益的补充。


   

  


     4、在师兄的指导下导入了配置spring的jar包

  


   5、背了Java必学单词第六章

   第六章
rate:[reit] 比率
young:[jʌŋ] 年轻的
schedule:['skedʒul] 表 清单
negative:['negətiv] 否定的
customer:['kʌstəmə] 顾客 买主
birthday:['bə:θdei] 生日
point:[pɔint] 分数 得分
continue:[kən'tinju:] 进入到下一个循环
return:[ri'tə:n] 返回(值)
schedule:['skedʒul] 表 清单
total:['təutl] 总人数,,全体的



二、明天计划的事情:

 1、继续学习spring,继续完成任务进度

 2、如果有时间,继续看看面向对象的内容,一天比一天更加理解

 3、抓紧学习的时间,不能懈怠



 三、遇到的问题:


  1、每逢遇到不理解的操作就像追根究底,不是说这样学习不好,只是Java的学习不能想得多、敲得少,很多内容其实在做任务时,敲代码中就能理解,凭空的想象反倒效率低,即使当时想清楚了,没有实操过一边,仍然会忘记得很快。


  2、学习效率不高,要结合老大的方法和自身实际情况来调节,多逼一下自己,现在是修真院最差的Java学生,如果还不努力,整天思维游离,那就违背了当初来学习的初衷,师兄的教导也让我感触颇深


 3、以后遇到不会的东西一定不要急躁,遇到困难的知识点也不能畏惧,相信自己一定能吃下来,少抱怨,多敲代码


  四、收获:

  如上


返回列表 返回列表
评论

    分享到