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核心機制

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM