Spring4 快速入門
1 Spring簡介
1.1 Spring是什么?###
Spring 是一個 IOC 和 AOP 容器的開源框架,為簡化企業級應用而生。
IOC(Inversion of Control)控制反轉,不再是等待容器返回資源,而是主動讓容器推送資源。
其中DI(Dependency Injection)依賴注入,就是IOC的一種表現方式。說白了,就是利用xml解析+java反射機制技術,讀取配置文件給對象賦值罷了(也就是下面的第四步)。
詳解可參考:Spring4 IOC詳解
AOP(Aspect Oriented Programming)面向切面編程,暫時不說!!!Spring4 AOP詳解
1.2 Spring 做什么?###
Spring就像一個管家,幫你管理事務。傳統的應用,應用層(Struts2)和事務層(Service)聯系很緊密,通過Spring管理之間的關系,減低其耦合性。說白了,Spring的出現就是為了解決現有問題,使開發更快捷,更健壯。若是越用越麻煩,誰還用他。另外,一定要好好學習Spring,他可是有一統天下的野心。有針對Struts2的SpringMVC,有針對Hibernate/mybatis的SpringData,以及為了簡化開發的 Spring boot 和 Spring Cloud。你害怕了么?
2 入門代碼
按照國際慣例,我們先來一個Hello World得意。
第一步:創建maven web項目,不清楚的可以訪問:http://blog.csdn.net/qq_19558705/article/details/49887717
第二步:導包。maven導包的好處,就是可以自己控制自己,把需要的最佳的依賴導入,從而減少包的沖突。
<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對象
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底層代碼解析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: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>
第五步:體驗一把依賴注入的快感
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/postedit/49992021
每天都在進步,每天都在成長,如果有什么問題和建議可以留言,我會及時處理。如果你覺得不錯,可以點個贊哦!
----------------------- 以上內容寫於 2015-11-23 10:49 ,現在從csdn搬家過來, 以下是2017-10-24 補充內容 -----------------------
其實以上內容並不完全是 spring4.x 的方法 =。=|||
在spring 2.x 和 spring 3.x 的時代:我們通常采用基本配置一般用xml方式,業務開發用注解方式。其實spring 3.x 已經提供了java編程方式。而在spring 4.x的時候就已經開始推薦使用java編程時。原因和具體的使用方法后續有時間補充介紹
使用起來很簡單,兩個注解:
- @Configuration 修飾在類上,告知程序這是一個配置類。你可以理解為一個xml文件。
- @Bean 修改在一個getXXX() 方法上,告知程序它已經實例化了。你可以理解為是一個bean。