1. 程式人生 > >SSM框架(Spring Spring MVC Mybatis)基礎入門學習2——Spring入門例項

SSM框架(Spring Spring MVC Mybatis)基礎入門學習2——Spring入門例項

上次學習了servlet的基礎知識還記得麼,先來回顧一下吧:講了servlet的訪問流程,配置方法,以及原理。今天我們來學習spring的入門例項,分為3部分來學習。

1.Spring的基本知識:IoC(控制反轉)和DI(依賴注入),AOP(面向切面的程式設計)

2.Spring常用注入方法的seter

3.Spring的自動掃描注入和自動裝配

第一部分:Spring的基本知識

        網上到處都是,我一開始看得也是天花亂墜,還是要自己把第二部分的例項寫一遍就都瞭解了。講的太抽象!!我也大概講一下自己作為一個新手的比較片面的認識:IoC和DI其實本質上是一個東西,Ioc是個很大的概念大概意思是物件控制權脫離程式向元件靠,DI是由容器負責裝配物件,java方法提供依賴關係,它是IoC的一種形式。其實用大白話說就是一個意思:我要物件,為了省事不自己找了,自己找了物件還要自己維護。現在全交給IoC容器去辦,我要什麼物件只要清楚的告訴它,它就會給你創造出來。不用自己維護那先物件,極大的解決了各層之間物件耦合的問題。

     AOP面向切面的程式設計,由於本人知識水平有限覺得它就是一個功能很強大的過濾器。對於剛入行的我們用的不太多,只在編碼校驗時用一下,例項中並沒有用這個功能。等上入門之後,再學這個吧。一口吃不成一個大胖子麼。

第二步分:Spring常用注入方法的seter

        注入bean物件需要3步,第一準備好要注入的物件,第二設定注入關聯關係,第三就是呼叫了。基本的注入方法有兩種seter法和構造器法,這裡我們用seter法,程式碼更加簡單。廢話不多說,程式碼貼出來大家看:

public class HelloWorldServicePre {
	
    private IHelloWorldDao iHelloWorld;//此介面下有2個業務的實現方法

    public void sayHello(){
    	iHelloWorld = new HelloWorldDaoOne();//每次呼叫時都必須在service層例項化Dao層的類,高耦合關係不利於後期維護
        String HelloWords=iHelloWorld.getHelloWords();
        iHelloWorld = new HelloWorldDaoTwo();
        HelloWords+=iHelloWorld.getHelloWords();
        System.out.println(HelloWords);
    }
}

採用Spring的IoC容器後,耦合關係降低:
package com.xdy.service;

import com.xdy.dao.IHelloWorldDao;

public class HelloWorldServiceIocSeter {
	// Field type HelloWorld
    private IHelloWorldDao helloWorld1;//宣告需要用的兩個Dao層的類,不用例項化,然後寫出他們的get與set方法,供容器呼叫
    private IHelloWorldDao helloWorld2;
  
    
    public void sayHello(){
        String HelloWords=helloWorld1.getHelloWords();//容器根據helloWorld的set方法例項化該物件,不用我們去操作,是不是很省心
        if(null!=helloWorld2){
        	
        HelloWords+=helloWorld2.getHelloWords();
        }
        System.out.println(HelloWords);
    }


	public IHelloWorldDao getHelloWorld2() {
		return helloWorld2;
	}


	public void setHelloWorld2(IHelloWorldDao helloWorld2) {
		this.helloWorld2 = helloWorld2;
	}
    
	public IHelloWorldDao getHelloWorld1() {
		return helloWorld1;
	}

	public void setHelloWorld1(IHelloWorldDao helloWorld1) {
		this.helloWorld1 = helloWorld1;
	}

}
配置檔案這樣寫:
<?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/beans
                        http://www.springframework.org/schema/beans/spring-beans.xsd">
  <!--每個id對應一個bean類,在程式碼中直接取id就可以拿到對應的類的實體  -->
    <bean id= "helloWorldDaoOne"
        class="com.xdy.dao.HelloWorldDaoOne"></bean>
        
    <bean id="helloWorldDaoTwo"
        class="com.xdy.dao.HelloWorldDaoTwo"></bean> 
  
    <bean id="helloWorldServiceSeter1"
        class="com.xdy.service.HelloWorldServiceIocSeter">
<!--  property是一個屬性,那麼對應bean類中的一個成員,ref代表注入一個bean物件,下邊這句話的意思是將helloWorldDaoOne物件注入到helloWorldServiceSeter1物件的helloWorld成員  ,property還有其他用法感興趣的自己去學,這裡我們只用到bean注入,就可以將Dao層和Service層的物件關聯起來,是不是很方便,就不用在server層寫太多程式碼了 -->
        <property name="helloWorld1" ref="helloWorldDaoOne"/>
    </bean>
    
    <bean id="helloWorldServiceSeter2"
        class="com.xdy.service.HelloWorldServiceIocSeter">
        <property name="helloWorld1" ref="helloWorldDaoOne"/>
        <property name="helloWorld2" ref="helloWorldDaoTwo"/>
    </bean>
  
</beans>

將server層的業務方法和Dao層的資料模型方法關聯注入後,在控制層就可以直接呼叫:
package com.xdy.controler;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.xdy.service.HelloWorldServiceIocSeter;

 

public class HelloControlerSeter {

	public static void main(String [] args){
                 //獲得容器上下文物件
		 ApplicationContext context =
                 new ClassPathXmlApplicationContext("config.xml");
          
		 System.out.println("......iocSeter1........");
                  //獲得所需的bean物件
		 HelloWorldServiceIocSeter iocSeter =
              (HelloWorldServiceIocSeter) context.getBean("helloWorldServiceSeter1");
                 //呼叫物件方法
		 iocSeter.sayHello();
		 
		 System.out.println("..........iocSeter1.........");
		 iocSeter =
              (HelloWorldServiceIocSeter) context.getBean("helloWorldServiceSeter2");
		 iocSeter.sayHello();
		 
		
		 
	}
	
	
}

手動配置就講完了,具體例項在下邊會添出來,供大家免費下載!!!

第三部分:Spring的自動掃描注入和自動裝配

         一個專案業務類可能成百上千個,一個一個配置bean,然後配置關聯注入太繁瑣。一般常用的就是這個了,掃描特定的包有註解的注入,掃描所有方法有註解裝配!是不是很方便,先來看配置文件:

<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.2.xsd
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"> 
     
<context:component-scan base-package = "com.xdy" >  
    <context:exclude-filter type="regex"  expression= "com/.xdy/.controler/..*"  />  
</context:component-scan>  
</beans>  


你沒有看錯,就這麼多,自動掃描註冊bean,自動掃描注入!以上程式碼將掃描com.xdy包下所有類(除controler包之外)的註解,註解的使用方式如下:
package com.xdy.dao;

import org.springframework.stereotype.Repository;

@Repository
public class HelloWorldDaoAuto  implements IHelloWorldDao  {
	   public String getHelloWords()  {
           return "One say Hello!";
   }
}

@Repository 註解說明它是資源型,為了程式碼可讀性最好將Spring註解都使用比較詳細的註解
package com.xdy.service;


import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.xdy.dao.IHelloWorldDao;
@Service
public class HelloWorldServiceAuto {
	
	@Resource
    private IHelloWorldDao helloWorldAuto;
  
    
    public void sayHello(){
        String HelloWords=helloWorldAuto.getHelloWords();
        
        System.out.println(HelloWords);
    }


	
}

@service註解說明這個bean是service層的bean,注意成員有@Resource 註解,它的意思是此bean載入時要依賴注入helloWorldAuto的bean,我們上邊剛好把它註冊為資源型bean,所以IoC容器會找到他們的id是匹配的然後注入。這裡注意,id是唯一標識,意味著所有註解的名稱需要唯一,不同包下也不允許有同名bean的name,否則會報錯!!!!入門例項用這麼多就可以了,至於其他的註解,等大家入門之後再做研究吧。

主呼叫方法這樣寫:

package com.xdy.controler;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.xdy.service.HelloWorldServiceAuto;


public class HelloControlerAuto {

	public static void main(String [] args){
		 ApplicationContext context =
                 new ClassPathXmlApplicationContext("auto.xml");
          
		 System.out.println("......auto........");
		 HelloWorldServiceAuto auto =
              (HelloWorldServiceAuto) context.getBean("helloWorldServiceAuto");
		 auto.sayHello();
		
		 
	}
	
	
}

輸出:......auto........
One say Hello!

這就是Spring在SSM中用的最多的功能了,它將幫助我們維護各層間bean類的關係,幫我們建立bean!AOP等入門以後,再一起學習吧!!!

下篇文章,我們一起學習Spring和Mybits結合應用吧,同樣我也會寫一個入門demo,與大家分享!

最後,免費下載地址:

http://download.csdn.net/detail/nwpumaster/9586022

相關推薦

SSM框架(Spring Spring MVC Mybatis)基礎入門學習2——Spring入門例項

上次學習了servlet的基礎知識還記得麼,先來回顧一下吧:講了servlet的訪問流程,配置方法,以及原理。今天我們來學習spring的入門例項,分為3部分來學習。 1.Spring的基本知識:IoC(控制反轉)和DI(依賴注入),AOP(面向切面的程式設計) 2.Spr

基於Spring Cloud的微服務構建學習-2 Spring Boot

html art ann 發布 class start pid 問題 需要 基於Spring Cloud的微服務構建學習-2 Spring Boot 為什麽使用Spring Boot而不是Spring   Spring Boot具有自動化配置,快速開發,輕松部署優點,非

SSM框架開發web項目系列(六) SpringMVC入門

商品 rwx tmx quest npv you odm pci vdp   前言   我們最初的javaSE部分學習後,基本算是入門了,也熟悉了Java的語法和一些常用API,然後再深入到數據庫操作、WEB程序開發,漸漸會接觸到JDBC、Servlet/Jsp之類的知識,

主流 SSM 框架Java 後臺 springmvc mybatis 有代碼生成器

javaA代碼編輯器,在線模版編輯,仿開發工具編輯器,pdf在線預覽,文件轉換編碼B 集成代碼生成器 [正反雙向](單表、主表、明細表、樹形表,快速開發利器)+快速表單構建器freemaker模版技術 ,0個代碼不用寫,生成完整的一個模塊,帶頁面、建表sql腳本,處理類,service等完整模塊C 集成阿裏巴

SSM框架(三)——Mybatis多表關聯查詢

一、一對一關聯  1.1、提出需求   根據班級id查詢班級資訊(帶老師的資訊) 1.2、建立表和資料   建立一張教師表和班級表,這裡我們假設一個老師只負責教一個班,那麼老師和班級之間的關係就是一種一對一的關係。 CREATE TABLE teacher( t_id INT PRIMARY

基於Spring Boot和Spring Cloud實現微服務架構學習(一)-Spring框架介紹

總結 看了幾周Spring相關框架的書籍和官方demo,是時候開始總結下這中間的學習感悟。 首先,最想說的是,當你要學習一套最新的技術時,官網的英文文件是學習的最佳渠道。因為網上流傳的多數資料是官網翻譯而來,很多描述的重點也都偏向於作者自身碰到的問題,這樣就很容易讓你理解

ssm框架之持久層mybatis動態sql標籤屬性大全

參考並轉自:https://www.cnblogs.com/zjfjava/p/8886432.html   1. 定義sql語句 1.1 select 標籤 id :唯一的識別符號. parameterType:傳給此語句的引數的全路徑名或別名 例:com.test.poso

Java入門學習-Hello Spring Boot

工具與環境 IDEA ULTIMATE版 jdk 1.8.0_111 maven 3.5.0 選擇模板 Spring Initializr–web XXApplication.java 此為啟動類,神器已預設寫好 package co

[spring入門學習筆記][spring的IoC原理]

什麼叫IoC 控制反轉(Inversion of Control,縮寫為IoC),是面向物件程式設計中的一種設計原則,可以用來減低計算機程式碼之間的耦合度。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI),還有一種方式叫“依賴

SSM框架項目的mvc攔截器

contex redirect del return exception http user 建立 use 為了防止用戶在不登錄的情況下通過並接請求直接訪問系統,我們需要通過session和攔截器來防止這樣的情況。 攔截器的配置: 為攔截器建立一個包:intercept

PowerDesigner最基礎的使用方法入門學習2

存儲過程 sql codes img 希望 ros id字段 ica 安裝文件 from:http://www.cnblogs.com/huangcong/archive/2010/06/14/1757957.html 最近要忙期考,但還是決定每天抽點空來寫CodeSmi

MATLAB入門學習-#2-矩陣基礎#1

MATLAB入門學習-#2-矩陣基礎#1 1.建立一個矩陣 2.矩陣的簡單操作 MATLAB的各種資料型別,在MATLAB中均以矩陣的形式存在(標量、向量都是特殊的矩陣),矩陣是MATLAB最基本的資料物件。

Maven實現SSM框架pom.xml實現(版本號:Spring4.2.4+Mybatis3.4.2)

看到很多文章和視訊都採用Maven整合SSM,花了一天時間終於跑起來了,話不說話,先分享給大家 一:準備材料 Eclipse+Maven+jdk+Tomcat,安裝不多說了。 二:Eclipse新建Maven專案 File->New->MavenP

Java零基礎入門學習2:變數與變數型別

大家好,歡迎回到我們的Java零基礎課程,今天我們要講的是變數與變數型別。 我們先來回憶一下我們小學時候學的未知數與方程。裡面的XYZ很是煩人。你有沒有想過在做不出題是,想把XYZ變為自己想要的數,那不是很好? 當然,在數學試卷上這麼做,大大的“X”就會出現在卷面上。不過,這可是資訊科,不是數學,在我

SSM框架實現登陸註冊功能-從零學習SSM框架(4)

前言 很久沒有做過後臺開發了,最近朝花夕拾,重新回憶回憶SSM框架的基本知識。記記筆記。 正文 本文將從零開始實現網路中常用的登陸註冊功能。所有操作均基於前幾篇關於SSM框架文章操作。 準備 依然是mysql資料庫,資料庫與表名和之前的一致,我這幾篇文章是一個專案中的

spring學習-2.spring的兩種注入方式

spring的兩種注入方式 一.設值注入 1.新建一個介面類 public interface Behaviour { public String learn(); } 2.實現新建的介面類 public class Learn implements B

Scrapy框架學習(2.scrapy入門,簡單爬取頁面,並使用管道(pipelines)儲存資料)

上個部落格寫了:  Scrapy的概念以及Scrapy的詳細工作流程 https://blog.csdn.net/wei18791957243/article/details/86154068 1.scrapy的安裝  pip install scrapy

基於Spring Boot和Spring Cloud實現微服務架構學習(四)-Spring Cloud總結

Spring Cloud介紹 Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了一種簡單的開發方式。

JavaSE入門學習2:Java開發準備基礎

       一Java語言概述        Java是一種可以撰寫跨平臺應用程式的面向物件的程式設計語言。Java 技術具有卓越的通用性、高效性、平臺 移植性和安全性,廣泛應用於PC、資料中心、遊

JavaScript入門學習(2)--進度條

tel htm type () doc element TE light document <html> <style type="text/css"> #bar{width:0px; height:20px; background:#e