步驟一:下載Spring開發包。html
官網:https://spring.io/ 下載地址:https://repo.spring.io/libs-release-local/org/springframework/spring/java
spring-framework-3.0.2.RELEASE-dependencies和spring-framework-4.2.4.RELEASE-dist 解壓第二個,解壓目錄:web
步驟二:搭建項目,引入Spring項目spring
建立項目:因爲Spring是JavaSE/EE一站式框架,因此既能夠建立web項目或者java項目,這裏建立web項目。apache
導入jar:Spring框架搭建確定須要核心包,上面Core Container裏面四個就是核心,其餘的,須要什麼功能添加哪一個jar,在libs裏面找。還有spring已經弄好的日誌記錄包,在dependencies裏面log4j和commons包下編程
步驟三:引入相關配置文件(在src下建立)session
log4j.propertiesapp
### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.err log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ### log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=c\:mylog.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### # error warn info debug trace log4j.rootLogger= info, stdout
applicationContext.xml文件(Spring的核心配置文件)框架
頭部引入:在解壓下來的spring-framework-4.2.4.RELEASE-dist\docs\spring-framework-reference\html\xsd-configuration.html裏面就有配置文件頭部schema約束ide
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置,將實現類的對象建立交給Spring管理 bean標籤: id:給bean起個名字,惟一,不能重複,不能出現特殊字符,就看作根據面向接口編程new出來的實例 class:類的全路徑,底層根據全路徑生成實例 --> <bean id="userDao" class="cn.xxx.dao.impl.UserDaoImpl"> <!-- 屬性依賴注入,底層會自動封裝,只要在dao實現類提供屬性和set方法就行 --> <property name="name" value="張三"></property> </bean> </beans>
UserDaoImpl.java(UserDao接口的實現)
package cn.xxx.dao.impl; import cn.xxx.dao.UserDao; /** *@param *@author cxh */ public class UserDaoImpl implements UserDao { private String name; public void setName(String name) { this.name = name; } @Override public void insert() { System.out.println(name+"用戶信息插入"); } }
測試類:
@Test public void demo1() { // 經過加載配置文件建立Spring工廠類(框架默認加載路徑在src下,因此徹底能夠將配置文件放在一個目錄下) ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/config/applicationContext.xml"); // 經過工廠來解析XML獲取Bean的實例 UserDao userDao = (UserDao) applicationContext.getBean("userDao"); userDao.insert(); }
運行結果:
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment). log4j:WARN Please initialize the log4j system properly. 張三用戶信息插入
上面就是基於Spring的IOC的搭建。
IOC:控制反轉,將對象的建立權交給Spring
DI:依賴注入,前提必須有IOC的環境,Spring在管理這個類的時候順便會注入類的依賴的屬性。
對於上面applicationContext.xml文件裏面bean標籤還要在說:
bean的生命週期配置(其實就是dao實現類實例的生命週期)
bean的做用範圍配置(scope屬性):
singleton:默認的,Spring會採用單例模式建立這個對象
prototype: 多例模式(Spring和Struts2整合時候用到,值棧是須要多例建立)
request: Spring建立這個類後,將這個類存入到request域中,應用到web項目中。
session: 同上,將類存到session域中。
globalSession:應用到web中,必須在porlet環境下使用,其實就是指在一個地方存入信息後,在其子系統中也用該信息,最典型的的是騰訊軟件的登陸,如qq和qq空間,沒有prolet環境就至關普通session。