当前位置: 代码迷 >> Java相关 >> Spring(1)简述(转载)
  详细解决方案

Spring(1)简述(转载)

热度:105   发布时间:2016-04-22 20:28:04.0
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核心机制

  相关解决方案