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