Spring框架學習-搭建第一個Spring項目

步驟一:下載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實現類實例的生命週期)

  •   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。

相關文章
相關標籤/搜索