Spring核心概念

一、Spring框架概述
1、轻量级的Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建,
Spring框架提供了一个开发平台,用于整合其他技术,例如Struts,Hibernate,Mybatis等。
例子:
把Spring比作一台电脑的主板,它为各种硬件设施(CPU,内存,硬盘)提供了接口,
这样做的好处是,在改善系统的结构方面,更利于系统的扩展和升级。
2、包含的内容:
IoC容器(控制反转IoC,依赖注入DI)
AOP实现(面向切面编程)
数据访问支持
简化JDBC/Hibernate编码
声明式事务
Web集成
3、作用:
a、实现一个全方位的整合框架,实现“一站式”的企业应用开发
b、提供了整合其他技术的API
c、提供了创建对象的功能,这样Spring就编程了一个大的工厂,所以spring是一个具有工厂功能的框架
d、spring提供了两种非常重要的机制IOC和AOP,这样的好处是降低了组件对象之间的耦合度,实现了对象之间的解耦。
4、Spring优点
低侵入式设计
独立于各种应用服务器
依赖注入特性将组件关系透明化,降低了耦合度
面向切面编程特性允许将通用任务进行集中式处理
与第三方框架的良好整合
二、Spring框架基本应用
1、对象创建功能
使用配置文件:
a.添加spring-ioc开发jar包到工程
b.在src下添加applicationContext.xml配置文件
c.将bean组件在配置文件中定义(bean组件也就是程序中需要使用spring创建的对象),
d.实例化spring容器对象,调用getBean(“标示符”)获取Bean对象。
使用Spring IoC解耦合步骤:
创建工程并添加Spring的jar包
创建业务层和数据访问层接口
编写业务层和数据访问层实现类
在业务实现类中添加DAO接口引用和相关访问器,注意JavaBean命名规范
编写Spring配置文件,完成业务层和数据访问层装配
2、IOC机制
A、概念:
控制反转,可以理解为组件之间的调用,将组件对象的创建和关系的建立由第三方框架或容器负责。
B、IOC实现原理----依赖注入(DI)
当两个组件存在使用关系时,也就是存在依赖关系时。
依赖关系建立可以通过以下几种注入途径:
a、setter方式注入,通过set方法将DAO传入
在Action中定义属性变量和set方法
在定义配置时,指定注入
b、构造方式注入
通过构造器将DAO传入
在Action中定义属性变量和带参数的构造方法
在定义配置时,指定注入
C、实现思想
将组件对象的控制权从代码本身转移到外部容器
组件化的思想:分离关注点,接口和实现分离
依赖的注入:将组件的构建和使用分开(运行时注入)
目的:解耦合。实现每个组件时只关注组件内部的事情
要点:明确定义组件间的接口
D、Spring Bean封装机制
Spring以Bean的方式管理所有的组件,Java EE的全部组件都被视为Bean管理
Bean在Spring的容器中运行,Spring负责创建Bean的实例,并管理其生命周期
E、Bean的作用域
singleton 在Spring容器中仅存在一个共享的Bean实例
prototype 每次从容器中都获取一个新的实例
request 每次HTTP请求都会创建一个新的Bean实例
session 同一个HTTP请求共享一个Bean实例
global session 同一个全局Session共享一个Bean实例
如何使用:
唯一实例:(Bean的作用域默认情况就是为单例:scope=“singleton”)
创建新实例:
<bean id= "user" class= "entity.User" scope= "prototype " />
  • 1
F、BeanFactory
由org.springframework.beans.factory.BeanFactory接口定义
方法:
getBean(String name)
containsBean(String name)
getType(String name)
它是工厂模式(Factory pattern)的实现,主要负责创建和管理bean
子接口:ApplicationContext
实现类 ClassPathXmlApplicationContext
实现类 FileSystemXmlApplicationContext
如何使用整合多个配置文件:
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {“conf/beans1.xml” , “conf/beans2.xml”} );
3、AOP机制
A、概念:
AOP又被称为面向方面编程,其实就是在面向对象的基础上又进行了一次封装,由于面向对象是将共同的属性和方法封装起来,
而面向切面编程则是面向共同的方面逻辑,如事务和异常,所有的对象都会产生这样一个共性的方面。
它将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决
面向切面编程:
是一种通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的技术
B、为什么使用AOP?
a、就是为了方便,把自己做的事情都让Spring容器去做了。用了AOP能让开发人员少写很多代码
b、就是为了更清晰的逻辑,可以让我的业务逻辑去关注自己本身的业务,而不去想一些其他的事情。这些其他的事情包括:安全,事物,日志等等。
B、OOP与AOP的区别:
这两种设计思想在目标上有着本质的差异。具体如下:
OOP:针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分
AOP:针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或者阶段,
以获得逻辑过程中各部分之间低耦合的隔离效果。
详细参
posted @ 2019-10-26 08:34  怀鑫  阅读(152)  评论(0编辑  收藏  举报