javascript
Spring松耦合的实现
HelloShiyanlou 與松耦合的實現
一、實驗介紹
1.1 實驗內容
本節實驗將帶你入門簡單的 Maven 項目創建和如何實現松耦合。
1.2 實驗知識點
- Maven 介紹
- Spring 松耦合
1.3 實驗環境
- JDK1.7
- Eclipse JavaEE
二、項目文件結構
三、 實驗步驟
3.1 實驗環境介紹
3.1.1 Maven 簡介
在項目開始之前,我們先來了解一下Maven相關知識。
Maven 是一個項目管理和綜合工具。Maven 提供了開發人員構建一個完整的生命周期框架。開發團隊可以自動完成項目的基礎工具建設,Maven 使用標準的目錄結構和默認構建生命周期。
在多個開發團隊環境時,Maven 可以設置按標準在非常短的時間里完成配置工作。由于大部分項目的設置都很簡單,并且可重復使用,Maven 讓開發人員的工作更輕松,同時能夠創建報表,檢查、構建和測試自動化設置。
Maven提供了開發人員的方式來管理:
- Builds
- Documentation
- Reporting
- Dependencies
- SCMs
- Releases
- Distribution
- mailing list
概括地說,Maven簡化和標準化項目建設過程,處理編譯,分配,文檔,團隊協作和其他任務的無縫連接。 Maven增加可重用性并負責建立相關的任務。
3.1.2 Maven 環境搭建
請打開實驗環境桌面上的 Xfce ,輸入:
wget http://labfile.oss.aliyuncs.com/courses/33/apache-maven-3.3.9-bin.tar.gz獲取 Maven 最新安裝包。 然后解壓,繼續輸入:
tar -zvxf apache-maven-3.3.9-bin.tar.gz接下來,部署,繼續輸入:
sudo gedit /etc/profile用 gedit 編輯器打開 profile 文件,修改 Path 。
在 profile 文件的最后輸入:
#set Maven environment export MAVEN_HOME=/home/shiyanlou/apache-maven-3.3.9 export PATH=${MAVEN_HOME}/bin:${PATH}設置好 MAVEN_HOME 和 PATH 之后,保存退出。
然后輸入:
source /etc/profile使操作立即生效。
至此,此 Maven 安裝完成,繼續輸入:
mvn -v顯示如圖,則安裝成功。
3.1.3 導入 Maven 項目所需的包
由于 Maven 新建項目需要很多包,首先會掃描本地倉庫,如果沒有則需要聯網,在中央倉庫下載到本地倉庫。我們已經把本次項目需要的包已經打包傳到服務器上,現在,我們只需要從實驗樓下載所要的包,并安放到正確的位置即可。
仍舊在 Xfce 中,輸入:
wget http://labfile.oss.aliyuncs.com/courses/33/res.tar.gz然后,解壓:
tar -zvxf res.tar.gz解壓完成后,生成的 .M2 文件夾和之前我們解壓的 apache-maven-3.3.9 同在目錄:?/home/shiyanlou/?下。已知,默認的 maven 本地倉庫在?/home/shiyanlou/.m2/?下。(作業:由何處可以看出本地倉庫的默認路徑?)所以我們解壓好的文件正好覆蓋源?.m2?文件夾。?.m2?文件夾的默認是隱藏文件夾,若要查看,請點擊?視圖?,點擊:?顯示隱藏文件?。如圖:
3.2 創建 Maven 工程
打開 eclipse ,鼠標右鍵新建,other ,如圖:
在里面可以找到 Maven 選項卡,點擊 Maven Project , 點擊 Next ,如圖:
選擇默認的工程位置如圖:
點擊 Next。
創建普通的 maven 工程,選擇如圖:
點擊 Next 。
填寫:
- Group Id:項目的組織機構,也是包的目錄結構,一般都是域名的倒序,比如?com.shiyanlou.demo?;
- Atifact Id :項目實際的名字,比如 spring3-Example ;
- Packaging :可在 Group Id 后加?.Atifact Id;
- Version :項目版本號比如?1.0-SNAPSHOT。
這三個選項對應于自動生成的 pom 文件中相應的配置。如圖:
最后點擊 Finish ,創建完成。
3.3 代碼編寫
3.3.1 創建 pom.xml
打開項目的 pom.xml ,進行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>com.shiyanlou.demo</groupId><artifactId>spring3-Example</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>spring3-Example</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- Spring3 deploy --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.0.9.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.0.9.RELEASE</version></dependency></dependencies> </project>
實際上,Maven 使用這三個值來唯一指定一個項目。引用一個庫文件也是通過這三個值來確定所引用的庫及其版本號,比如本例引用最新的 junit 庫版本為 3.8.1. 此時假定 junit 還需引用其它庫, Maven 自動管理而無需在 pom 文件中指定。
3.3.2 創建 HelloWorld.java
接下來,我們在項目名上右鍵再創建一個 Spring bean,首先創建一個包,包名為?com.shiyanlou.demo.helloworld?:
再在該包內創建一個類,類名為 HelloWorld:
并將 HelloWorld.java 編輯如下:
package com.shiyanlou.demo.helloworld;public class HelloWorld{private String name;public void setName(String n){this.name=n;}/**創建打印Hello方法*/public void printHello(){System.out.println("The first Spring 3:hello"+name);} }3.3.3 創建 SpringBeans.xml
我們先在?src/main/?下新建一個 Folder,命名為?resources,如圖所示:
現在可以開始創建 Spring Bean 配置文件,創建文件 SpringBeans.xml ,配置 bean 如下。文件位于?src/main/resources下。
編輯 SpringBeans.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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="helloBean" class="com.shiyanlou.demo.helloworld.HelloWorld"><property name="name" value="shiyanlou" /></bean></beans>3.3.4 創建測試 App
在?com.shiyanlou.demo.spring3_Example?包下創建一個類,類名為 App:
package com.shiyanlou.demo.spring3_Example;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.shiyanlou.demo.helloworld.HelloWorld;public class App {private static ApplicationContext context;public static void main( String[] args ){context = new ClassPathXmlApplicationContext("SpringBeans.xml");HelloWorld obj = (HelloWorld) context.getBean("helloBean");obj.printHello();}}3.3.5 作為 java application 運行
結果如下:
至此,helloworld 程序便成功完成!
3.4 松耦合的目的
上一部分,我們已經創建了 Maven 項目,打印出了 HelloShiyanlou 。為了方便,我使用上面的工程, pom.xml 文件一致,不必修改。下面,我們實驗證明 Spring 的松耦合。假設項目需要輸出到 CVS 或者 JSON 。實驗效果如圖: 輸出 CVS :
輸出 JSON :
3.5 松耦合代碼編寫
3.5.1 IOutputGenerator.java
創建?com.shiyanlou.demo.loosely_coupled?包,新建一個一個 IOutputGenerator 接口:
接口內容如下:
package com.shiyanlou.demo.loosely_coupled;public interface IOutputGenerator {public void generateOutput();}3.5.2 CsvOutputGenerator.java
CVS 輸出,實現了IOutputGenerator 接口。同樣的步驟,步驟如下:
內容如下:
package com.shiyanlou.demo.loosely_coupled;public class CsvOutputGenerator implements IOutputGenerator {public void generateOutput() {System.out.println("Creating CsvOutputGenerator Output......");}}3.5.3 JsonOutputGenerator.java
JSON 輸出,實現了 IOutputGenerator 接口,步驟如下:
內容如下:
package com.shiyanlou.demo.loosely_coupled;public class JsonOutputGenerator implements IOutputGenerator {public void generateOutput() {System.out.println("Creating JsonOutputGenerator Output......");}}3.6 用 Spring 依賴注入調用輸出
用 Spring 的松耦合實現輸出相應的格式。
首先在?com.shiyanlou.demo.loosely_coupled?包內創建一個需要用到輸出的類 OutputHelper.java ,內容如下:
3.7 創建一個 spring 配置文件
此文件用于依賴管理?src/main/resources?下創建配置文件 Spring-Output.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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="OutputHelper" class="com.shiyanlou.demo.loosely_coupled.OutputHelper"><property name="outputGenerator" ref="CsvOutputGenerator" /></bean><bean id="CsvOutputGenerator" class="com.shiyanlou.demo.loosely_coupled.CsvOutputGenerator" /><bean id="JsonOutputGenerator" class="com.shiyanlou.demo.loosely_coupled.JsonOutputGenerator" /></beans>
3.8 App.java
此文件用于通過 Spring 調用相應的 output ,內容如下:
package com.shiyanlou.demo.spring3_Example;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.shiyanlou.demo.loosely_coupled.OutputHelper;public class App {private static ApplicationContext context;public static void main( String[] args ){context = new ClassPathXmlApplicationContext(new String[] {"Spring-Output.xml"});OutputHelper output = (OutputHelper)context.getBean("OutputHelper");output.generateOutput();}}現在,已經實現了松耦合,當需要輸出改變時,不必修改任何代碼 .java 文件,只要修改 Spring-Output.xml 文件?<property name="outputGenerator" ref="CsvOutputGenerator" />?中的 ref 值,就可以實現輸出不同的內容,不修改代碼就減少了出錯的可能性。
實驗目錄:
3.9 運行結果
當 Spring-Output 如下時:
<bean id="OutputHelper" class="com.shiyanlou.demo.loosely_coupled.OutputHelper"><property name="outputGenerator" ref="CsvOutputGenerator" /></bean>運行結果為:
當 Spring-Output 如下時:
<bean id="OutputHelper" class="com.shiyanlou.demo.loosely_coupled.OutputHelper"><property name="outputGenerator" ref="JsonOutputGenerator" /></bean>運行結果為:
四、實驗總結
本節介紹了 HelloWorld 的 spring 簡單項目,并簡單介紹了松耦合的概念。下一節我們將進入 IoC 容器的學習。
五、課后習題
由何處可以看出本地倉庫的默認路徑?
六、參考鏈接
本課程后續實驗基于博客園 leiOOlei 博文制作,內容由原作者?leiOOlei?授權實驗樓使用。
from:?https://www.shiyanlou.com/courses/578/labs/1923/document
總結
以上是生活随笔為你收集整理的Spring松耦合的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring 概述
- 下一篇: gradle idea java ssm