日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【SSH进阶之路】Spring简介,搭建Spring环境——轻量级容器框架(一)

發(fā)布時間:2023/12/18 javascript 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SSH进阶之路】Spring简介,搭建Spring环境——轻量级容器框架(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我們介紹了Spring的基本概念,以及比較重要的兩大核心IoC和AOP,基本上介紹的比較簡單,一句話帶過。從這篇博客開始,我們開始重新介紹Spring框架的基本理論,并搭建一個簡單的Spring開發(fā)環(huán)境。?????????

?

Spring是什么?

?

?????? Spring是一個集成了許多第三方框架的大雜燴,其核心技術(shù)是IOC(控制反轉(zhuǎn),也稱依賴注入)和AOP(面向切面編程),所以spring既是一個IoC容器,也是一個AOP框架。知道了什么是Spring是學(xué)習(xí)的開端,下面說一下為什么使用Spring。

?

為什么使用Spring?

?

?????? 我們知道沒有Spring,Struts和Hibernate可以很好的工作,在開篇中我把沒有Spring的架構(gòu)稱為“獨木橋”,有Spring的架構(gòu)稱為“陽光大道”。說白了,Spring解決了企業(yè)應(yīng)用開發(fā)的復(fù)雜性,用基本的javaBean來完成EJB的事情,從大小和開銷方向說,Spring都是輕量級的。Spring具有很多的優(yōu)點:

?

1、使我們的分層更好。

?????SSH框架系統(tǒng)從職責上分為四層:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層(實體層)。

?????

????? 從上圖我們可以看到Spring處于業(yè)務(wù)邏輯層,擔任連接Struts和Hibernate橋梁的角色。系統(tǒng)的整個層次關(guān)系可以一目了然。

?
2、對象管理更好。

????? 從上圖,我們看到Spring將Transactions、Session以及業(yè)務(wù)層服務(wù)都放到了業(yè)務(wù)邏輯層來管理。系統(tǒng)的條理變得更加清晰,不僅使持久化層的職責更加單一,而且提高了系統(tǒng)的靈活性。?
?

3、AOP

???????面向切面編程,AOP讓開發(fā)人員創(chuàng)建非行為性的關(guān)注點,并將它們插入到應(yīng)用代碼紅。公共服務(wù)(比如日志、持久性、事務(wù)等)就可以就可以分解成方面并應(yīng)用到域?qū)ο笊?#xff0c;同時不會增加域?qū)ο蟮膶ο竽P偷膹?fù)雜性。

?

4、IoC

??????IoC,用白話來講,就是由容器控制程序之間的關(guān)系,而非傳統(tǒng)實現(xiàn)中,由程序代碼直接操控。這也就是所謂“控制反轉(zhuǎn)”的概念所在:控制權(quán)由應(yīng)用代碼中轉(zhuǎn)到了外部容器,控制權(quán)的轉(zhuǎn)移,是所謂反轉(zhuǎn)。

?

用途

?

????? 對于Spring的用途很多,但是Spring的核心和經(jīng)典我們可以簡化為三部分:

1、IoC容器可以將對象之間的依賴關(guān)系交由Spring管理,進行控制。

2、AOP方便進行面向切面編程,是oop的擴展,想加什么功能直接加。

3、能夠集成各種優(yōu)秀的框架,struts、Hibernate等等,還有很多,不再一一羅列。

?

架構(gòu)圖

?

?????????

?

???????相信你能看出來這是Spring的架構(gòu)圖,Spring包含了許多的特性,其實都包含在六個模塊中:Core、AOP、DAO、ORM、JEE和Web,其實我們對它們并不陌生,當你學(xué)習(xí)或使用Spring時,至少已經(jīng)使用了三部分的內(nèi)容:DAO、ORM(對象關(guān)系映射)、Web。下面我們逐個看一下:

1、DAO

????? DAO框架封裝了所有的數(shù)據(jù)庫訪問的操作,Spring提供了對DAO的支持,還有模版jdbc,進一步封裝了jdbc。不管是Spring jdbc還是各種ORM框架(Hibernate、iBatis、MyBatis),它們都對JDBC做了進一步的封裝,使數(shù)據(jù)訪問層的操作更加靈活、易用。當然,它們也各有各的優(yōu)缺點,在項目技術(shù)選型時非常重要的一項。同時,Spring還可以集成第三方的框架。

?

2、ORM

????? Spring提供了對ORM框架的支持,能夠集成大多主流的ORM框架。JPA是一個java持久化注解的規(guī)范,Hibernate是一種對JPA的實現(xiàn)。TopLink是Oracle的一個ORM框架;JDO是sun公司的一個規(guī)范。OJB是appach的。IBatis不是嚴格意義上的ORM,ORM一般是對云數(shù)據(jù)的映射,描述類和屬性,它是基于SQL的映射器。由于ORM框架層出不窮,種類繁多,大家可以自行查一下它們是哪個公司的產(chǎn)品,以及各自優(yōu)缺點等等。

?

3、Web

???????Spring不僅具有自己的表示層SpringMVC,同上面一樣,它還也可以支持第三方的表示層框架struts,webwork,以及一些第三方的工具。

?

??????? 這篇博文,我們剩下Spring最核心的三部分,后面的博文我會一一詳細介紹。下面我們搭建一個Spring的添加用戶的開發(fā)環(huán)境:

?

搭建Spring開發(fā)環(huán)境

??
1、下載SpringFramework,并解壓縮到指定目錄。我使用的是Spring3.2.9,使用哪個版本無所謂只要將jar加入到項目即可。

2、在IDE中新建一個java項目,并將Spring所需jar加入到項目中,我所用IDE為MyEclipse。

3、Spring采用Apache common_logging,并結(jié)合Apache log4j作為日志輸出組件。為了在調(diào)試過程中能觀察到Spring的日志輸出,在CLASSPATH中新建log4j.properties配置文件,內(nèi)容如下:

<span style="font-size:12px;">log4j.rootLogger=info, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n</span>

4、提供Spring配置文件applicationContext.xml。

5、編寫代碼

?

配置完成之后,目錄結(jié)構(gòu)如下圖所示:

?????

???????????

UserDao接口

public interface UserDao {public void addUser(String userName,String password); }

UserDao的實現(xiàn)UserDao4MysqlImpl

public class UserDao4MySqlImpl implements UserDao {public void addUser(String userName,String password){System.out.println("UserDao4MySqlImpl.addUser()");System.out.println("userName="+userName);System.out.println("password="+password);} }

UserDao4Oracelmpl

<span style="font-size:12px;">public class UserDao4OracleImpl implements UserDao {public void addUser(String userName,String password){System.out.println("UserDao4OracleImpl.addUser()");System.out.println("userName="+userName);System.out.println("password="+password);} }</span>

UserManager接口

public interface UserManager {public void addUser(String userName,String password); }

UserManager的實現(xiàn)

import com.liang.spring.dao.UserDao;public class UserManagerImpl implements UserManager {//定義一個成員變量,使用構(gòu)造方式賦值private UserDao userDao;public UserManagerImpl(UserDao userDao) {this.userDao = userDao;}/*** set注入* @param userDao*/ // public void setUserDao(UserDao userDao) { // this.userDao = userDao; // }@Overridepublic void addUser(String userName, String password) {userDao.addUser(userName, password);}}

客戶端

import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.liang.spring.manager.UserManager;public class Client {/*** @param args*/public static void main(String[] args) {//由我們的應(yīng)用程序負責服務(wù)(對象)定位//這是一個組裝過程,userManager用userDao,這種關(guān)系是用程序描述的,現(xiàn)在用配置文件描述//UserManager userManager = new UserManagerImpl(new UserDao4MySqlImpl());//userManager.addUser("張三", "123");//BeanFactory是一個接口,有不同的實現(xiàn),ClassPathXmlApplicationContext是對beanFactory的實現(xiàn)//把applicationContext.xml讀進來BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");//ApplicationContext都實現(xiàn)了beanFactory的接口//ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");//getBean加產(chǎn)品標識,相當與userManager的實現(xiàn),再轉(zhuǎn)化為userManager的接口UserManager userManager =(UserManager)factory.getBean("userManager");userManager.addUser("jiuqiyuliang", "123456");}}

Spirng的配置文件:applicationContext.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"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><!-- id是唯一性標識,不能重--><!-- 相當于工廠一樣--><bean id="userDao4Mysql" class="com.liang.spring.dao.UserDao4MySqlImpl"></bean><bean id="userDao4Oracle" class="com.liang.spring.dao.UserDao4OracleImpl"></bean><!-- userManager使用userDao接口,userDao使用構(gòu)造函數(shù)將依賴關(guān)系給userManager--><!-- userManager依賴哪寫dao,IoC容器不僅是一個工廠,它提供了管理依賴的能力。--><bean id="userManager" class="com.liang.spring.manager.UserManagerImpl"><!-- 使用的構(gòu)造函數(shù),描述了一個種依賴關(guān)系。userManager依賴于Mysql的實現(xiàn)容器提供了查找能力,找到之后new好,之后會給userManager,放到userManager的過程為DI,依賴注入。(主動注入)--><constructor-arg ref="userDao4Mysql"></constructor-arg><!--或<constructor-arg ref="userDao4Oracle"></constructor-arg>--></bean> </beans>

在上面的配置文件中可以自由的切換各種數(shù)據(jù)庫的實現(xiàn),DAO層的靈活性可想而知。

?

項目的測試結(jié)構(gòu):

?

總結(jié)

?

??????最后,今天先介紹這么多,我們對于Spring的認識才剛剛開始,僅是冰山一角。對于Spring,我更喜歡用下面的八個字形容:海納百川,有容乃大。

????? 下篇博文介紹IoC的幾種注入方式,謝謝關(guān)注。

總結(jié)

以上是生活随笔為你收集整理的【SSH进阶之路】Spring简介,搭建Spring环境——轻量级容器框架(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。