“你用过什么框架?我用过Srping,但不要说成我用过春!”,哈哈。刚开课,佟佟就把大家斗乐了,非常开心。佟佟这称号是同学私底下叫的,比较亲切。他无论在哪个班上课,都可以听到那个班的欢声笑语。
大名鼎鼎的Spring大家都听过,spring是一个开源框架,Spring为简化企业级应用开发而生。使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能。Spring是一个DI(依赖注入)和AOP(面向切面编程)容器框架。
Spring具体应用细节,以及与struts和hibernater的整合。我们还没有学习到,今天算是Spring的基础操作和实现IOC(控制反转)以及DI(依赖注入)的原理。
从JavaWEB基础学习过来的,IOC和DI的实现原理非常简单,虽然他们的名字响亮。他们的实现原理,我在来传智播客之前就已经了解了:http://user.qzone.qq.com/252796718/infocenter?ptlang=2052&ADUIN=252796718&ADSESSION=1264331746&ADTAG=CLIENT.QQ.2707_Mysrv.0 。
Let's begin!
一、spring框架
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。
Spring框架概述
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
· 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
· Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
· Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
· Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
· Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
· Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
· Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。
我们今天的重点内容是——核心容器。
二、HelloSpring
这个“HelloWorld!”的经典程序,还要引领多长时间?可能会一直下去吧。我们现在就开始编写一个Spring的HelloWorld!程序,来学习一下Spring环境的搭建。
1.安装Spring的Eclipse插件。
2.新建立一个Java工程,在工程上右键->Spring Tools->Add Spring Project Nature。
3.导入“spring-framework-2.5.6.SEC01\dist\spring.jar”和“spring-framework-2.5.6.SEC01\lib\jakarta-commons\commons-logging.jar”。我们使用的Spring的版本是2.5,3.0刚刚出来。但3.0与2.5的区别不是很大。
4.在工程中添加“HelloSpring.java”:
package cn.itcast.cc.spring;
public class HelloSpring {
private String message;
// 构造函数
public HelloSpring() {
System.out.println("HelloSpring,Construct!");
}
// Spring通过此方法注入属性值
public void setMessage(String message) {
this.message = message;
}
// 打印消息
public void hello() {
System.out.println("Hello:" + this.message);
}
}
|
5.在“src”目录下,新建一个“applicationContext.xml”文件。(在“src”目录上右键->New->Other->Spring->Spring Bean Definition):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!-- 描述一个Bean,name指定Bean的名称,class指定Bean类名 -->
<bean name="helloSpring" class="cn.itcast.cc.spring.HelloSpring">
<!-- property设置属性值,name指定名称,value指定属性值 -->
<property name="message" value="**Spring**" />
</bean>
</beans>
|
6.添加测试类:
package cn.itcast.cc.spring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
// 创建应用程序环境
ApplicationContext appCon = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取名称为helloSpring的Bean
HelloSpring hs = (HelloSpring) appCon.getBean("helloSpring");
// 调用Bean的方法
hs.hello();
}
}
|
7.控制台输出:
指定Bean的名称,可以使用name,也可以使用id。一般情况下建议使用id,因为id在XML文件中是一个特殊的属性,XML会自动校验ID的唯一性。
可能通过属性的setter方法或着Bean的构造函数设置属性的值,但setter是比较常用的。使用构造函数设置属性的值,使用“<constructor-arg value="**Spring**"/>”替换“property”元素。注意一定要有与之对应的构造方法。
从刚开始的Dao接口到工厂模式再到Spring框架,都是为了实现更好的解耦。
三、Spring的配置文件
1.引用Bean
在应用中经常会遇见一个Bean实体,将另一个Bean实体做为自己的属性。那么这个属性值我们在XML文件中应该如何指定呢?Property有一个ref属性,ref属性的值设置为指定Bean元素的名称即可。
2.内部Bean
当一个Bean实体只被用作另一个Bean的属性时。我们可以将这个Bean声明为内部Bean。内部Bean无须设置它的id或name值,它被做为子元素嵌入在对应property元素中。
3.继承式Bean
bean元素中“depends-on”属性用来指定父类。
Spring 允许将通用的 Bean 配置抽象出来, 组成一个父 Bean。 继承这个父 Bean 的 Bean 称为子 Bean。
子 Bean 从父 Bean 中继承配置, 包括 Bean 的属性和在 <bean> 元素里的属性。
子 Bean 也可以覆盖从父 Bean 继承过来的配置。
父 Bean 可以作为配置模板, 也可以作为 Bean 实例。 若只想把父 Bean 作为模板, 可以设置 <bean> 的abstract 属性为 true, 这样 Spring 将不会实例化这个 Bean。
并不是 <bean> 元素里的所有属性都会被继承。 比如: autowire, dependency-check, abstract 等。
也可以忽略父 Bean 的 class 属性, 让子 Bean 指定自己的类, 而共享相同的属性配置。 但此时 abstract 必须设为 true。
4.设置集合属性
经常见到Bean具有集合属性,在hibernate的XML文件中也可以设置集合属性的值。
在 Spring 中可以通过一组内置的 xml 标签(例如: <list>, <set> 或 <map>) 来配置集合属性。
需求: 序列号生成器需要使用多个后缀。 这些后缀使用 “-” 作为分割, 附加在序列号后边。 这些后缀可以是任意的数据类型, 在拼接时将它们转换为字符串。
也可以使用“utility scheme”工具,定义可重用的集合设置,引时xml文件需要引入特定的标签库,参照下面的内容。
5.检查属性
设置Bean的“dependency-check="objects"”属性,检查bean中的所有属性是否通过setter方法注入了值。如果是通过构造方法注入,或没有注入都会抛异常。Dependency-check不检查属性值是否合法。
在bean中设置“dependency-check="objects"”属性,它会检查所有属性。如果我们想要检查某一个属性怎么办?首先添加一个:
HelloSpring,Construct!
Hello:**Spring**
|
或
使用“<context:annotation-config />”时,beans的元素属性内容为:
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor" />
|
<context:annotation-config />
|
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.5.xsd "fon
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
标题“传智播客2016spring资料4”揭示了这是一份关于Spring框架的教育资料,特别关注的是2016年传智播客教学课程中的第四天内容。传智播客是一家知名的IT教育机构,其课程通常深入浅出,适合初学者和有一定经验的...
传智播客spring教程全部源码,因为文件太大,所以分开来上传
传智播客spring 4天资料。包含课件和代码~
2017年-传智播客-张志君老师-SpringBoot视频教程 网上找了好久才找到的
通过传智播客的Spring框架2016版课程,学习者可以深入理解Spring的基本原理和实践应用,为成为一名合格的Java开发人员奠定坚实的基础。在实际学习过程中,应结合PPT和笔记,逐步掌握每个知识点,并通过实际项目练习...
按照“传智播客Spring2.5.6学习笔记最新整理”的指引,我们需从官方下载页面http://www.springsource.org/download下载Spring框架,随后解压缩并定位到关键的JAR文件。这些JAR文件包括: - `dist\spring.jar`:核心...
这个"传智播客spring ppt"很可能是针对初学者或进阶者设计的一系列课程材料,旨在帮助学习者深入理解并掌握Spring框架的各个方面。 在Spring框架中,最重要的概念之一是依赖注入。依赖注入允许开发者将对象之间的...
标题“传智播客Spring视频里所用的jar包”和描述中提到的内容涉及了Java Web开发中的几个关键框架和技术,主要包括Spring、Hibernate、Struts以及JPA。这些框架是构建企业级应用的重要组成部分,它们各自承担着不同...
这个"传智播客Spring教程源代码截取"包含了两个文件,"springѧϰ"和"spring学习",很可能是两个不同阶段的学习资料或者不同主题的示例代码。 1. **Spring IoC**:IoC是Spring的核心,它将对象的创建和管理权交给了...
这个"传智播客 spring2.5源代码_lib包"包含了Spring框架2.5版本的库文件,这些库文件对于理解Spring的工作原理、学习如何使用它以及进行相关开发非常有帮助。下面我们将深入探讨Spring 2.5的一些核心概念和功能。 1...
学习spring的好的例子。itcast 从购买的视屏里的源码
这个"传智播客Spring MVC课程源码"可能包含了从基础到高级的Spring MVC开发实例,对于学习和理解Spring MVC的工作原理及其在实际项目中的应用非常有帮助。下面将详细阐述Spring MVC的相关知识点。 1. **Spring MVC...
Spring 框架是Java开发中的一个重要组成部分,它是一个开源的控制反转(Inversion of Control,IoC)和面向切面(Aspect Oriented Programming,AOP)的容器框架。Spring的主要目标是简化企业级应用程序的开发,通过...
《2010传智播客struts2.1.8视频教程》1.09G 《EJB3.0视频教程》180M 《JDBC视频教程》664M 《jpa详解视频教程》165M 《spring2.5视频教程》365M 《传智播客_AJAX视频教程》1.27G 《传智播客_FTP视频教程》117M ...
传智播客培训机构的内部培训spring的ppt。很值得收藏学习。
传智播客-spring-PPT-黎活明-经典.ppt