Java框架之Spring(一)
在学习Spring之前,需要回忆一下工厂模式。下面会演示一段代码,自己体会。之所以要工厂模式是因为他有一个好处,很像Spring的用法。在实际开发中,new对象对于一个开发人员来说是一件非常需要小心谨慎的事情,也很考验人。new对象需要考虑的因素比较多,所以不要轻易去new,最好去调用。在工厂模式中,它将一些功能类封装起来,开发者只需去调用。在Spring中有个控制反转(IOC)和这个很像,可以自己体会一下。
一、工厂模式回顾(代码实例)
public class Test {
public static void main(String[] args) {
//未用工厂模式 要在这里自己创建(如下一行)
//TV tv= new TV(100,50,"绿色","熊猫"); //我们负责创建这个对象的实例 ,产生了依赖
TV tv1 =TVFactory.createTV(); //使用工厂,可以解耦合
TV tv2 =TVFactory.createTV();
System.out.println(tv1==tv2); //false
tv1.play();
tv2.play();
}
}
class TV
{
private int height;
private int width;
private String color;
private String pinpai;
TV(int height,int width,String color,String pinpai){
this.height=height;
this.width=width;
this.color=color;
this.pinpai=pinpai;
}
void play(){
System.out.println("电视机外观:");
System.out.println(pinpai+" " +height + width+color );
System.out.println("--电视开始播放----");
System.out.println("播放美国的节目....");
}
}
class TVFactory {
//生产电视
public static TV createTV(){
TV tv= new TV(100,50,"绿色","熊猫");
return tv;
}
}
二、Spring 简介
Spring 是一个 开源的、控制反转 (inversion of control -> IOC ) 的面向切面( AOP ) 的容器框架,它主要的目的是简化企业开发。
使用Spring 的好处:
1.降低组件之间的耦合度,实现软件各层之间的解耦;
2.可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播;
3.容器提供单例模式支持,开发人员不再需要自己编写实现代码;
4.容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能;
5.容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate;
6.Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用的开发;
Spring 负责管理容器中所有的组件, 这些组件统称为 Bean , 在Spring 的概念里,一切都是Bean,其实Spring就是面向Bean的编程(BOP,Bean Oriented Programming )。组成Spring的模块(组件)都可以单独存在 主要模块如下:
1)Spring Core (核心容器)
Supporting utlities
Bean container
核心容器: 提供Spring 框架的基本功能,核心容器的主要给件是BeanFactory,它是工厂模式的实现。BeanFactory 例用控制反转(IOC) 模式将应用程序的配置和依赖规范与实际的应用程序代码分开。
2)Spring Context (上下文的一个配置文件)
Application Context
Ui Support
validation
JNDI EJB supprot and remodeling Mail
Spring 上下文是一个配置文件,向Spring框架提供上下文信息。Spring 上下文包括企业服务,例如
JNDI 、EJB、电子邮件、国际化、校验和调度功能。
3)Spring AOP
Source-level
metadata
AOP infrastructure
通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring 框架中。所以,可以很容易地使Spring框架管理的任何对象支持AOP 。Spring AOP 模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP ,不用依赖EJB 组件,就可以将声明性事务管理集成到应用程序中。
4)Spring DAO
Transaction infrastructure
JDBC support
DAO support
DBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的DAO 异常层次结构。
5)Spring ORM
Hibernate Support
IBatis support
JDO Support
Spring 框架插入了若干个ORM 框架,从而提供了ORM的对象关系工具,其中包括JDO 、Hibernate 和iBatis SQLMap 。 所有这些都遵从Spring 的通用事务和DAO 异常层次结构。
6) Spring WEB
WebApplicationContext
Multipart resolver
Web Utilites
Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持。例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork。
7) Spring MVC
Web Mvc
framework
JSP/velocity
PDF/Export
Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC对控制逻辑和业务对象提供了完全的分离。它也允许你声明性地将请求参数绑定到你的业务对象中,此外,Spring的MVC框架还可以利用Spring的任何其它服务,例如国际化信息与验证。
Spring带来了复杂的J2EE开发的春天。它的核心是轻量级的IoC容器,它的目标是为J2EE应用提供了全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间可以彼此独立,也可以使用其它的框架方案加以代替,Spring希望为企业应用提供一站式(one-stopshop)的解决方案
三、Spring 中的重要概念
1) IOC (控制反转)
应用本身不负责依赖对象的创建和维护,而是交给其他程序去创建, 这样,控制权就由应用转到了外部容器,控制权的转移, 就叫控制反转。
//例子:
public class UserAcrion{
private IUserDao dao =new UserDaoImpl(); //创建一个dao对象 //业务方法
public String execute(){
dao.addUser(user);
} }
//反转形式的
public class UserAcrion{
UserAcrion(IUserDao dao){
this.dao=dao;
}
private IUserDao dao;
//业务方法
public String execute(){
dao.addUser(user);
}
}
//其他程序调用的时候
IUserDao dao=new UserDaoMysqlImpl(); //其他程序控制这个对象的创建
new UserAcrion(dao);
2) DI (依赖注入)
当我们把依赖对象交给外部容器负责创建, 上面的程序可以改成
public class UserAcrion{
private IUserDao dao; //依赖对象
...要生成 set 方法
public String execute(){
dao.addUser(user);
}
}
在程序运行期,动态的由外部容器(Srping),将依赖对象注进来,称为依赖注入。
3) AOP (Aspect Oriented Programming) 面向切面编程
例如:Struts2 中拦截器
可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
Java框架之Spring(一)的更多相关文章
- java框架篇---spring AOP 实现原理
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...
- java框架之Spring(2)-注解配置IOC&AOP配置
注解配置IoC 准备 1.要使用注解方式配置 IoC,除了之前引入的基础 jar 包,还需要引入 spring-aop 支持包,如下: 2.在 applicationContext.xml 中引入 c ...
- java框架篇---spring IOC 实现原理
IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述的那样晦涩.java程序员都知道:java程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,每个对象在使用 ...
- Java框架之Spring(四)
本文主要讲述在Spring中 1 注解方式装配 2 以自动扫描把组件纳入spring容器中管理 3 面象切面编程-代理的jdk 版实现 4 使用 Cglib 生成代理 5 aop编程的一些概念 6 使 ...
- java框架之Spring(1)-入门
介绍 概述 Spring 是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring 是于 2003 年兴起的一个轻量级的 J ...
- java框架之Spring(4)-Spring整合Hibernate和Struts2
准备 导包 Struts2 导入 Struts2 zip 包解压目录下 'apps/struts-blank.war' 中所有 jar 包,如下: asm-3.3.jar asm-commons-3. ...
- Java - 框架之 Spring
一. IOC 和 DI IOC : 控制反转,将对象的创建权反转给了 Spring.DI : 依赖注入,前提是必须要有 IOC 的环境,Spring 管理这个类的时候将类的依赖的属性注入(设置)进来 ...
- java框架篇---spring hibernate整合
在会使用hibernate 和spring框架后 两个框架的整合就变的相当容易了, 为什么要整合Hibernate?1.使用Spring的IOC功能管理SessionFactory对象 LocalSe ...
- java框架篇---spring aop两种配置方式
第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Befor ...
- java框架篇---spring IOC依赖注入
spring依赖注入的方式有4种 构造方法注入 属性注入 工厂注入 注解注入 下面通过一个实例统一讲解: User.java package com.bjsxt.model; public class ...
随机推荐
- codeforces 508B
B. New Year Permutation time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- mysql data type <----> java data type (数值)
https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html +----------------------------+---- ...
- 向Word添加一段文本
文档层次结构 [段落之后] 是一段连续文本,它定义具有一组常见属性的文本区域.一段连续文本由 r 元素表示,这样创建器便可组合换行.样式或格式设置属性,从而将相同信息应用于一段连续文本的所有部分. 正 ...
- Pycharm 开发 Django 项目
1. 安装Pycharm, 自行百度安装教程 2. 安装python3 自行百度安装教程 3. 安装Django框架 使用命令: Window的终端控制台输入:安装Django框架. pip inst ...
- .Wait()与.GetAwaiter()之间有什么区别
两者都是同步等待操作的结果差异主要在于处理异常.使用Wait,异常堆栈跟踪不会改变并表示异常时的实际堆栈,因此如果您有一段代码在线程池线程上运行,那么您将拥有类似的堆栈 ThreadPoolThrea ...
- 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful)
近来在考虑一个服务选型,dotnet提供了众多的远程服务形式.在只考虑dotnet到dotnet的情形下,我们可以选择remoting.WCF(http).WCF(tcp).WCF(RESTful). ...
- 本地连接虚拟机 Oracle数据库 报ORA-12541:TNS:no listener
一.环境 本机环境:win10,pl/sql Developer 虚拟机环境:win10,oracle 11g 1.本机和虚拟机互相ping都可以ping通. 2.虚拟机监听程序已启动. 二.配置文件 ...
- jQuery基础与JavaScript与CSS交互-第五章
目录 JavaScript框架种类及其优缺点 jQuery库 jQuery对象$ 掌握基本选择器 掌握过滤选择器 掌握表单选择器 RIA技术 常见的RIA技术 Ajax Sliverlight Fle ...
- LeetCode--No.002 Add Two Numbers
Add Two Numbers Total Accepted: 160702 Total Submissions: 664770 Difficulty: Medium You are given tw ...
- Django -- 部署Django 静态文件不能获取
# 在部署上下之后无法正常显示后台admin的静态文件 # 因为文件都在django内部,而在nginx中将配置都设置到一个位置: # 措施: 1.在settings.py文件中添加配置; STATI ...