原文出自: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

添加包

建立类

  1. package com.pb.demo;
  2.  
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. public class HelloSpring {
  7. private String str;
  8.  
  9. public void print() {
  10. System.out.println("Hello! " + this.getStr());
  11. }
  12.  
  13. public static void main(String[] args) {
  14. // 创建ApplicationContext上下文件对象
  15. ApplicationContext context = new ClassPathXmlApplicationContext(
  16. "applicationContext.xml");
  17. HelloSpring hello=(HelloSpring) context.getBean("hellospring");
  18. hello.print();
  19.  
  20. }
  21.  
  22. public String getStr() {
  23. return str;
  24. }
  25.  
  26. public void setStr(String str) {
  27. this.str = str;
  28. }
  29.  
  30. }

建立applicationContext.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  7. <bean id="hellospring" class="com.pb.demo.HelloSpring">
  8. <property name="str" value="Spring"></property>
  9. </bean>
  10.  
  11. </beans>

另一个

  1. package com.pb.demo;
  2.  
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. public class SpringDemo1 {
  7. private String name;
  8. private String job;
  9.  
  10. public void print() {
  11. System.out.println("姓名: " + this.getName() + " \t职业: " + this.getJob());
  12.  
  13. }
  14.  
  15. public static void main(String[] args) {
  16. ApplicationContext context = new ClassPathXmlApplicationContext(
  17. "applicationContext.xml");
  18. SpringDemo1 demo=(SpringDemo1)context.getBean("springdemo");
  19. demo.print();
  20.  
  21. }
  22.  
  23. public String getName() {
  24. return name;
  25. }
  26.  
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30.  
  31. public String getJob() {
  32. return job;
  33. }
  34.  
  35. public void setJob(String job) {
  36. this.job = job;
  37. }
  38.  
  39. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  7. <bean id="hellospring" class="com.pb.demo.HelloSpring">
  8. <property name="str" value="Spring"></property>
  9. </bean>
  10. <bean id="springdemo" class="com.pb.demo.SpringDemo1">
  11. <property name="name" value="林冲"/>
  12. <property name="job" value="80万禁军教头!"/>
  13. </bean>
  14. </beans>

六、Spring对单态和工厂模式的支持

6.1、工厂模式

  1. package com.pb.lnk;
  2. /**
  3. * 墨盒接口
  4. * @author Administrator
  5. *
  6. */
  7. public interface Lnk {
  8.  
  9. public void getColor();
  10. }

实现类

  1. package com.pb.lnk;
  2. /**
  3. * 彩色墨盒
  4. * @author Administrator
  5. *
  6. */
  7. public class Color implements Lnk {
  8.  
  9. @Override
  10. public void getColor() {
  11. System.out.println("=======使用彩色墨盒打印!========");
  12.  
  13. }
  14.  
  15. }
  16.  
  17. package com.pb.lnk;
  18. /**
  19. * 灰色墨盒
  20. * @author Administrator
  21. *
  22. */
  23. public class Grey implements Lnk {
  24.  
  25. @Override
  26. public void getColor() {
  27. System.out.println("--------使用灰色墨盒打印!---------");
  28.  
  29. }
  30.  
  31. }

测试类

  1. package com.pb.lnk;
  2.  
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. /**
  7. * 墨盒测试类
  8. *
  9. * @author Administrator
  10. *
  11. */
  12. public class LnkTest {
  13.  
  14. public static void main(String[] args) {
  15. ApplicationContext context = new ClassPathXmlApplicationContext(
  16. "applicationContext.xml");
  17.  
  18. Lnk k=null;
  19. k=(Lnk) context.getBean("color");
  20. k.getColor();
  21. k=(Lnk) context.getBean("grey");
  22. k.getColor();
  23.  
  24. }
  25.  
  26. }

applicationContext.xml

  1. <bean id="color" class="com.pb.lnk.Color"></bean>
  2. <bean id="grey" class="com.pb.lnk.Grey"></bean>

6.2、单态模式支持

  1. package com.pb.lnk;
  2.  
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. /**
  7. * 单态模式(单实例模式)
  8. * @author Administrator
  9. *
  10. */
  11. public class LnkTest2 {
  12.  
  13. public static void main(String[] args) {
  14. ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
  15. Lnk lnk1=null;
  16. Lnk lnk2=null;
  17. lnk1=(Lnk)context.getBean("color");
  18. lnk2=(Lnk)context.getBean("color");
  19. System.out.println(lnk1==lnk2);
  20. //结果是true表示2个是同一个对象
  21. }
  22.  
  23. }

七、Spring核心机制

Spring(一)简述(转载)的更多相关文章

  1. Spring(一)简述

    一.Spring简述 一段费话 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2 ...

  2. Spring IOC(转载)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  3. 【Spring】简述@Configuration配置类注册BeanDefinition到Spring容器的过程

    概述 本文以SpringBoot应用为基础,尝试分析基于注解@Configuration的配置类是如何向Spring容器注册BeanDefinition的过程 其中主要分析了 Configuratio ...

  4. Spring AOP简述

    使用面想对象(Object-Oriented Programming,OOP)包含一些弊端,当需要为多个不具有继承关系的对象引入公共行为时,例如日志,安全检测等.我们只有在每个对象中引入公共行为,这样 ...

  5. Spring的国际化(转载)

    1:在MyEclipse下面创建一个test的Web  Project,然后添加Spring相关的文件,在src根目录下创建applicationContext.xml文件. applicationC ...

  6. Spring学习(3):Spring架构(转载)

    1. Spring架构图 核心容器:包括Core.Beans.Context.EL模块. ●Core模块:封装了框架依赖的最底层部分,包括资源访问.类型转换及一些常用工具类. ●Beans模块:提供了 ...

  7. Spring学习(3):Spring概述(转载)

    1. Spring是什么? Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发. 在面向对象思想中 ...

  8. @Transactional spring 事务(转载)

    原文链接: http://www.cnblogs.com/sweetchildomine/p/6978037.html?utm_source=itdadao&utm_medium=referr ...

  9. Spring MVC 简述:从MVC框架普遍关注的问题说起

    任何一个完备的MVC框架都需要解决Web开发过程中的一些共性的问题,比如请求的收集与分发.数据前后台流转与转换,当前最流行的SpringMVC和Struts2也不例外.本文首先概述MVC模式的分层思想 ...

随机推荐

  1. netstat 命令state值

    1.LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态. State显示是LISTENING时表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接.就像你房子的 ...

  2. 【转】VSync Count 垂直同步

    原文:http://blog.csdn.net/yesy10/article/details/7794556 Unity3D中新建一个场景空的时候,帧速率(FPS总是很低),大概在60~70之间.一直 ...

  3. [git] git 的基础功能

    有两种方法获得一个 git 仓库:自行初始化,克隆别人已有的仓库 自行初始化 git init 克隆别人已有的库 git clone git@github.com:garrisonz/gitStudy ...

  4. poj 3465 Corn Fields 状态压缩

    题目链接:http://poj.org/problem?id=3254 #include <cstdio> #include <cstring> #include <io ...

  5. 青蛙的约会 - poj 1061(扩展欧几里得)

    分析:这个东西在数论里面应该叫做不定方程式,可以搜一下,有很精彩的证明,先求出来方程式的一组特解,然后用这组特解来求通解,但是求出来特解之后怎么求这些解里面的最小非负x值?我们知道 x = x0 + ...

  6. DOM方法

    DOM常用方法: 方法 描述 getElementById() 返回带有指定 ID 的元素. getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组 ...

  7. 【Android - 框架】之Dagger2+MVP的用法

    MVP模式本身相比于MVC模式就已经把View层和Controller层从Activity中进行了分离,将Model层和View层用Presenter层隔开,实现了初步的解耦.如果再加入Dagger2 ...

  8. GinWin命令控制台执行指令

  9. Java语言基础(四)

    Java语言基础(四) 一.基本数据类型(8) byte  8位  使用较少,一般用于网络传输: -128-+127 short  16位 不常用 -32768-+32767 int  32位 常用  ...

  10. 设置Eclipse中文API提示信息

    准备工作:下载中文API到本机:http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_ ...