Spring(一)简述
一、Spring简述
一段费话
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。
二、Spring体系结构

2.1、体系结构介绍
- Spring Core:管理bean与bean之间的依赖
- Spring Web:提供Web应用开发的支持
- Spring DAO:支持包括一致的异常处理和编程方式
- Spring BeanFactory:功能加强的一个子接口
- Spring MVC:针对Web应用MVC思想实现
- Spring ORM:用于与流行ORM框架整合
- Spring AOP:AOP面象切面编程,提供与OP联盟兼容的编号实现
以上大部分都可以 单独使用
2.2、各部分




三、Spring设计理念



四、如何获取Spring
下载地址
http://repo.spring.io/libs-release-local/org/springframework/spring/
五、使用Spring实现Hello Spring
添加包
建立类
package com.pb.demo; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class HelloSpring {
private String str; public void print() {
System.out.println("Hello! " + this.getStr());
} public static void main(String[] args) {
// 创建ApplicationContext上下文件对象
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
HelloSpring hello=(HelloSpring) context.getBean("hellospring");
hello.print(); } public String getStr() {
return str;
} public void setStr(String str) {
this.str = str;
} }
建立applicationContext.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="hellospring" class="com.pb.demo.HelloSpring">
<property name="str" value="Spring"></property>
</bean> </beans>
另一个
package com.pb.demo; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringDemo1 {
private String name;
private String job; public void print() {
System.out.println("姓名: " + this.getName() + " \t职业: " + this.getJob()); } public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
SpringDemo1 demo=(SpringDemo1)context.getBean("springdemo");
demo.print(); } public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getJob() {
return job;
} public void setJob(String job) {
this.job = job;
} }
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="hellospring" class="com.pb.demo.HelloSpring">
<property name="str" value="Spring"></property>
</bean>
<bean id="springdemo" class="com.pb.demo.SpringDemo1">
<property name="name" value="林冲"/>
<property name="job" value="80万禁军教头!"/>
</bean>
</beans>
六、Spring对单态和工厂模式的支持
6.1、工厂模式
package com.pb.lnk;
/**
* 墨盒接口
* @author Administrator
*
*/
public interface Lnk { public void getColor();
}
实现类
package com.pb.lnk;
/**
* 彩色墨盒
* @author Administrator
*
*/
public class Color implements Lnk { @Override
public void getColor() {
System.out.println("=======使用彩色墨盒打印!========"); } } package com.pb.lnk;
/**
* 灰色墨盒
* @author Administrator
*
*/
public class Grey implements Lnk { @Override
public void getColor() {
System.out.println("--------使用灰色墨盒打印!---------"); } }
测试类
package com.pb.lnk; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* 墨盒测试类
*
* @author Administrator
*
*/
public class LnkTest { public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml"); Lnk k=null;
k=(Lnk) context.getBean("color");
k.getColor();
k=(Lnk) context.getBean("grey");
k.getColor(); } }
applicationContext.xml
<bean id="color" class="com.pb.lnk.Color"></bean>
<bean id="grey" class="com.pb.lnk.Grey"></bean>
6.2、单态模式支持
package com.pb.lnk; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* 单态模式(单实例模式)
* @author Administrator
*
*/
public class LnkTest2 { public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Lnk lnk1=null;
Lnk lnk2=null;
lnk1=(Lnk)context.getBean("color");
lnk2=(Lnk)context.getBean("color");
System.out.println(lnk1==lnk2);
//结果是true表示2个是同一个对象
} }
七、Spring核心机制

Spring(一)简述的更多相关文章
- Spring(一)简述(转载)
原文出自:http://www.cnblogs.com/liunanjava/p/4396794.html 一.Spring简述 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量 ...
- 【Spring】简述@Configuration配置类注册BeanDefinition到Spring容器的过程
概述 本文以SpringBoot应用为基础,尝试分析基于注解@Configuration的配置类是如何向Spring容器注册BeanDefinition的过程 其中主要分析了 Configuratio ...
- Spring AOP简述
使用面想对象(Object-Oriented Programming,OOP)包含一些弊端,当需要为多个不具有继承关系的对象引入公共行为时,例如日志,安全检测等.我们只有在每个对象中引入公共行为,这样 ...
- Spring MVC 简述:从MVC框架普遍关注的问题说起
任何一个完备的MVC框架都需要解决Web开发过程中的一些共性的问题,比如请求的收集与分发.数据前后台流转与转换,当前最流行的SpringMVC和Struts2也不例外.本文首先概述MVC模式的分层思想 ...
- Spring5.0源码学习系列之Spring AOP简述
前言介绍 附录:Spring源码学习专栏 在前面章节的学习中,我们对Spring框架的IOC实现源码有了一定的了解,接着本文继续学习Springframework一个核心的技术点AOP技术. 在学习S ...
- spring annotation简述
一.Annotation基本概念 Annotation是jdk5以后出现的新特性,在jdk中,其内置了许多自己的Annotation,例如@Override,@SuppresWarning,@Depr ...
- Spring 详解第一天
spring 框架简述: http://www.cnblogs.com/ToBeAProgrammer/p/5230065.html http://www.cnblogs.com/ToBeAProgr ...
- Spring之IOC核心模块详解
Spring IOC简述 IOC称为控制反转,也有一种说法叫DI(依赖注入).IOC也是spring最核心的模块,Spring的所有工作几乎都围绕着IOC展开. 什么是控制反转呢?简单的说,控制反转就 ...
- Java方式配置Spring MVC
概述 使用Java方式配置Spring MVC,以及回顾一下Spring MVC的各种用法. Spring MVC简述 关于Spring MVC的介绍网上有很多,这里就不再赘述了,只是要说一下,Spr ...
随机推荐
- BABOK2主要概要输入输出图
- (非妙味3):浏览器window事件:及浏览各种尺寸介绍
(触发)window.onload; window.onscroll; window.onresize; (兼容)网页可视区尺寸.网页全文尺寸.滚动距离 (实例)广告块高度动态居中.回到顶部 ...
- 说说Web API数据格式化——Json
题外话 一同事离职了,我去上厕所的路上正巧碰到他办完离职手续出来,抱着他的全部家当,最值钱的可能就是那个两块钱的蓝色杯子和手中的雨伞了.在一块儿走向厕所的长长楼道里,我对他说:丫的,你是不是找到别的发 ...
- Scrum4.0
1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作愉快进展顺利 ...
- SQL Server中的连接查询【内连接,左连接,右连接,。。。】
在查询多个表时,我们经常会用“连接查询”.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据 ...
- 后缀数组 - 求最长回文子串 + 模板题 --- ural 1297
1297. Palindrome Time Limit: 1.0 secondMemory Limit: 16 MB The “U.S. Robots” HQ has just received a ...
- SqlDataReader、SqlDataAdapter與SqlCommand的 区别
1.SqlDataReader,在线应用,需要conn.open(),使用完之后要关闭. SqlConnection conn = new SqlConnection(connStr); //conn ...
- 【C#进阶系列】00 序
老早就被各种推荐<CLR via C#>这本书了,然而一直没去学. 因为工作中所需要的.NET功底目前算是足以应付了,而前端却不熟,所以跑去学了一段时间前端的知识. 终于算是把前端方面的基 ...
- 【JS复习笔记】02 对象与函数
好吧,因为很重要的事情,几天没写笔记了. 关于对象: ||可以用来填充默认值,如:myApp.name || "无" &&可以用来避免错误,myApp.NameOb ...
- 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期
[源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...