Spring(一)简述(转载)
原文出自:http://www.cnblogs.com/liunanjava/p/4396794.html
一、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(一)简述
一.Spring简述 一段费话 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2 ...
- Spring IOC(转载)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- 【Spring】简述@Configuration配置类注册BeanDefinition到Spring容器的过程
概述 本文以SpringBoot应用为基础,尝试分析基于注解@Configuration的配置类是如何向Spring容器注册BeanDefinition的过程 其中主要分析了 Configuratio ...
- Spring AOP简述
使用面想对象(Object-Oriented Programming,OOP)包含一些弊端,当需要为多个不具有继承关系的对象引入公共行为时,例如日志,安全检测等.我们只有在每个对象中引入公共行为,这样 ...
- Spring的国际化(转载)
1:在MyEclipse下面创建一个test的Web Project,然后添加Spring相关的文件,在src根目录下创建applicationContext.xml文件. applicationC ...
- Spring学习(3):Spring架构(转载)
1. Spring架构图 核心容器:包括Core.Beans.Context.EL模块. ●Core模块:封装了框架依赖的最底层部分,包括资源访问.类型转换及一些常用工具类. ●Beans模块:提供了 ...
- Spring学习(3):Spring概述(转载)
1. Spring是什么? Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发. 在面向对象思想中 ...
- @Transactional spring 事务(转载)
原文链接: http://www.cnblogs.com/sweetchildomine/p/6978037.html?utm_source=itdadao&utm_medium=referr ...
- Spring MVC 简述:从MVC框架普遍关注的问题说起
任何一个完备的MVC框架都需要解决Web开发过程中的一些共性的问题,比如请求的收集与分发.数据前后台流转与转换,当前最流行的SpringMVC和Struts2也不例外.本文首先概述MVC模式的分层思想 ...
随机推荐
- netstat 命令state值
1.LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态. State显示是LISTENING时表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接.就像你房子的 ...
- 【转】VSync Count 垂直同步
原文:http://blog.csdn.net/yesy10/article/details/7794556 Unity3D中新建一个场景空的时候,帧速率(FPS总是很低),大概在60~70之间.一直 ...
- [git] git 的基础功能
有两种方法获得一个 git 仓库:自行初始化,克隆别人已有的仓库 自行初始化 git init 克隆别人已有的库 git clone git@github.com:garrisonz/gitStudy ...
- poj 3465 Corn Fields 状态压缩
题目链接:http://poj.org/problem?id=3254 #include <cstdio> #include <cstring> #include <io ...
- 青蛙的约会 - poj 1061(扩展欧几里得)
分析:这个东西在数论里面应该叫做不定方程式,可以搜一下,有很精彩的证明,先求出来方程式的一组特解,然后用这组特解来求通解,但是求出来特解之后怎么求这些解里面的最小非负x值?我们知道 x = x0 + ...
- DOM方法
DOM常用方法: 方法 描述 getElementById() 返回带有指定 ID 的元素. getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组 ...
- 【Android - 框架】之Dagger2+MVP的用法
MVP模式本身相比于MVC模式就已经把View层和Controller层从Activity中进行了分离,将Model层和View层用Presenter层隔开,实现了初步的解耦.如果再加入Dagger2 ...
- GinWin命令控制台执行指令
- Java语言基础(四)
Java语言基础(四) 一.基本数据类型(8) byte 8位 使用较少,一般用于网络传输: -128-+127 short 16位 不常用 -32768-+32767 int 32位 常用 ...
- 设置Eclipse中文API提示信息
准备工作:下载中文API到本机:http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_ ...