步驟一:下載Spring開發包。
官網:https://spring.io/ 下載地址:https://repo.spring.io/libs-release-local/org/springframework/spring/
spring-framework-3.0.2.RELEASE-dependencies和spring-framework-4.2.4.RELEASE-dist 解壓第二個,解壓目錄:
步驟二:搭建項目,引入Spring項目
創建項目:由於Spring是JavaSE/EE一站式框架,所以既可以創建web項目或者java項目,這里創建web項目。
導入jar:Spring框架搭建肯定需要核心包,上面Core Container里面四個就是核心,其他的,需要什么功能添加哪個jar,在libs里面找。還有spring已經弄好的日志記錄包,在dependencies里面log4j和commons包下
步驟三:引入相關配置文件(在src下創建)
log4j.properties
### 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約束
<?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實現類實例的生命周期)
- init-method.屬性:值可以隨便取,Spring會幫創建一個初始化方法,當創建Dao實例時,默認加載,但是方法體為空,需要在dao實現類里面定義該值方法名的方法,里面寫一些初始化加載東西。
- destroy-method屬性:和上面初始化用法一樣,不過是銷毀Dao實例后才會加載,也就是說工廠關閉了就銷毀了。
bean的作用范圍配置(scope屬性):
singleton:默認的,Spring會采用單例模式創建這個對象
prototype: 多例模式(Spring和Struts2整合時候用到,值棧是需要多例創建)
request: Spring創建這個類后,將這個類存入到request域中,應用到web項目中。
session: 同上,將類存到session域中。
globalSession:應用到web中,必須在porlet環境下使用,其實就是指在一個地方存入信息后,在其子系統中也用該信息,最典型的的是騰訊軟件的登錄,如qq和qq空間,沒有prolet環境就相當普通session。