最近在看这本书,可能是因为自身的JAVA基础水平不足,导致第二章第一小节就直接看崩溃了。零零散散地看了一遍之后决定再看一遍第一小节(我一直都觉得努力就会有回报),发现了看不懂的原因是对专有名词以及本章的目的了解不透彻,所以特地把那些让自己觉得摸不着头脑的专有名词罗列了一遍,顺便把里面的每个晦涩的文字捋一遍并且完全弄懂并且解析出来。下面很多转载了一些网上的解释。
重在与大家相互讨论,个人能力不足,望谅解并提出意见。
首先先来看一下目录,
- 第2章 使用Spring进行依赖注入
- 2.1 Spring IoC容器
- 2.1.1配置元数据
- 2.1.2配置和使用容器
- 2.1 Spring IoC容器
一开始看的时候,连目录标题的看不懂。那么这句话,
使用Spring进行依赖注入
是什么意思呢。
首先我们要知道这个词是什么意思。
依赖注入
经常和控制反转放在一起谈的依赖注入。控制反转是思想,而使用这种思想最常见的方式就是依赖注入(还有一种依赖查找)。
百度了很多资料,问了一下大佬小智,大概了解到了这个标题的意思就是
使用Spring框架引入到项目中,并且通过配置文件对指定类进行配置 以达到依赖注入效果
之后如果有个更深层次的了解再继续补充概念。
实例化
指在面向对象的编程中,通常把用类创建对象的过程称为实例化。
元数据
元数据是指用来描述数据的数据,更通俗一点,就是描述代码间关系,或者代码与其他资源(例如数据库表)之间内在联系的数据。在java中,元数据以标签的形式存在于java代码中,元数据标签的存在并不影响程序代码的编译和执行。java就是通过注解来表示元数据的。
注解
也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。特殊的接口。
作用分类:
①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
自注解
就是自定义注解
接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
自动装配
采用继承的方式实现自动装配
采用包扫描+注解的方式实现自动装配
JAVA容器
在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器,或者就叫做集合,集合就是将若干性质相同或相近的类对象组合在一起而形成的一个整体。容器分为Set集、List列表、Map映射。
Spring容器
在spring整体框架的核心概念中,容器的核心思想是管理Bean的整个生命周期。但在一个项目中,Spring容器往往不止一个,最常见的场景就是在一个项目中引入Spring和SpringMVC这两个框架,其本质就是两个容器:Spring是根容器,SpringMVC是其子容器。
IoC容器和Bean
IoC容器就是具有依赖注入功能的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需在代码中new相关的对象,应用程序由IOC容器进行组装。
Spring IoC管理的对象,我们称为Bean。Bean就是Spring容器初始化,装配,及管理的对象。除此之外,Bean就与应用程序中的其他对象没有什么区别。那IoC如何实例化Bean、管理Bean之间的依赖关系?这些就需要配置元数据。
Maven
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。
POJO 和 EJB (本书第一章已经讲的很详细了,所以稍微讲一下便可)
POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
XML
可扩展标记语言,配置元数据的传统格式是XML,然而,XML并不是唯一的格式,我们还可以选择使用基于注解和基于Java的配置元数据。值得庆幸的事,Spring容器独立于配置元数据格式。因此可以根据自己的喜好选择任何格式,甚至可以在相同的应用程序中混合使用不同的格式。
xmlns
xmlns (XML Namespace的缩写)属性可以在文档中定义一个或多个可供选择的命名空间。该属性可以放置在文档内任何元素的开始标签中。该属性的值类似于 URL,它定义了一个命名空间,浏览器会将此命名空间用于该属性所在元素内的所有内容。
xmlns:xsi
xmlns:xsi表示使用xsi作为前缀的Namespace,当然前缀xsi需要在文档中声明。
@Service @Repository @Component @Autowired
注解
MVC
是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。M是指业务模型,V是指用户界面,C则是控制器。
MVC的dao层、service层和controller层
DAO层
DAO层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接参数都在Spring配置文件中进行配置。
Service层
Service层主要负责业务模块的应用逻辑应用设计。同样是首先设计接口,再设计其实现类,接着在Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实体,具体要调用已经定义的DAO层接口,封装Service层业务逻辑有利于通用的业务逻辑的独立性和重复利用性。程序显得非常简洁。
Controller层
Controller层负责具体的业务模块流程的控制,在此层要调用Service层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里进行,针对具体的业务流程,会有不同的控制器。我们具体的设计过程可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块。这样不仅使程序结构变得清晰,也大大减少了代码量。
View层
View层与控制层结合比较紧密,需要二者结合起来协同开发。View层主要负责前台jsp页面的显示。
它们之间的关系
Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。
工厂方法模式
工厂方法模式(FACTORY METHOD)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品。
更新至2018年08月02日早上11点50分。
完成了相关词语解释。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
这两行代码查了很多资料恕我直言我解析不了,比较深奥。新手的话直接copy来用,以后再了解便可。