Spring 是一個 IOC 和 AOP 容器的開源框架,爲簡化企業級應用而生。
IOC(Inversion of Control)控制反轉,再也不是等待容器返回資源,而是主動讓容器推送資源。
java
其中DI(Dependency Injection)依賴注入,就是IOC的一種表現方式。說白了,就是利用xml解析+java反射機制技術,讀取配置文件給對象賦值罷了(也就是下面的第四步)。
詳解可參考:Spring4 IOC詳解
AOP(Aspect Oriented Programming)面向切面編程,暫時不說!!!Spring4 AOP詳解mysql
Spring就像一個管家,幫你管理事務。傳統的應用,應用層(Struts2)和事務層(Service)聯繫很緊密,經過Spring管理之間的關係,減低其耦合性。說白了,Spring的出現就是爲了解決現有問題,使開發更快捷,更健壯。如果越用越麻煩,誰還用他。另外,必定要好好學習Spring,他但是有一統天下的野心。有針對Struts2的SpringMVC,有針對Hibernate/mybatis的SpringData,以及爲了簡化開發的 Spring boot 和 Spring Cloud。你懼怕了麼?web
按照國際慣例,咱們先來一個Hello World得意。
第一步:建立maven web項目,不清楚的能夠訪問:http://blog.csdn.net/qq_19558...
第二步:導包。maven導包的好處,就是能夠本身控制本身,把須要的最佳的依賴導入,從而減小包的衝突。
spring
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>spring</groupId> <artifactId>helloworld</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.2.1.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency> <!-- spring start --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <!-- spring end --> </dependencies> </project>
第三步:HelloWorld對象sql
package com.spring.hello; public class HelloWorld { private String hello; public void setHello(String hello) { this.hello = hello; } public void helloWorld(){ System.out.println("Spring say :"+hello); } }
第四步:配置xml文件,要嚴格按照語法來寫,便於Spring底層代碼解析xmlexpress
<?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:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- 配置一個 bean --> <bean id="helloWorld" class="com.spring.hello.HelloWorld"> <!-- 爲屬性賦值 --> <property name="hello" value="Hello World"></property> </bean> </beans>
第五步:體驗一把依賴注入的快感apache
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class HelloTest { public static void main(String[] args) { //1. 建立Spring 的IOC容器 ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); //2. 從容器中獲取 Bean 其實就是new 的過程 HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld"); // 也能夠是,但不建議 HelloWorld helloWorld = ctx.getBean(HelloWorld.class); //3. 執行函數 helloWorld.helloWorld(); } }
運行結果若是打印如下內容,則說明完成編程
十一月 23, 2015 12:01:46 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@edbe39: startup date [Mon Nov 23 12:01:46 CST 2015]; root of context hierarchy 十一月 23, 2015 12:01:46 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [beans.xml] Spring say :Hello World
那麼一個簡單的spring HelloWorld就作好了,是否是很簡單!若是你以爲很簡單,那麼你已經打開了Spring的大門。若是你以爲很難理解,沒事!多看敲幾遍。原文連接:http://write.blog.csdn.net/po...
天天都在進步,天天都在成長,若是有什麼問題和建議能夠留言,我會及時處理。若是你以爲不錯,能夠點個贊哦!segmentfault
----------------------- 以上內容寫於 2015-11-23 10:49 ,如今從csdn搬家過來, 如下是2017-10-24 補充內容 -----------------------mybatis
其實以上內容並不徹底是 spring4.x 的方法 =。=|||
在spring 2.x 和 spring 3.x 的時代:咱們一般採用基本配置通常用xml方式,業務開發用註解方式。其實spring 3.x 已經提供了java編程方式。而在spring 4.x的時候就已經開始推薦使用java編程時。緣由和具體的使用方法後續有時間補充介紹
使用起來很簡單,兩個註解: