溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring的基礎環(huán)境如何搭建

發(fā)布時間:2022-03-14 15:59:47 來源:億速云 閱讀:184 作者:iii 欄目:web開發(fā)

本篇內容介紹了“Spring的基礎環(huán)境如何搭建”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

什么是Spring ?

Spring是一個開源框架,用來處理業(yè)務邏輯層和其他層之間的耦合問題。因此Spring將面向接口開發(fā)的思想貫穿整個系統(tǒng)應用,且Spring是一個輕量級框架,所以在誕生之初,便風靡Java開發(fā)市場,得到了廣泛的認可與響應。

Spring基礎概念

依賴注入(DI:Dependency Injection)又叫控制反轉(IoC:Inversion of Control):將組件對象的控制權從代碼本身,轉移到外部容器。Spring容器也是一個IoC容器,用來管理所有的Java Bean,主要是通過BeanFactory來進行產生和管理Bean。

Spring框架搭建

1. 建立一個Java Project

Spring框架是即支持Java Project,又支持Dynamic Web Project,如下所示:

Spring的基礎環(huán)境如何搭建

2. 導入Spring框架需要的Jar包

Spring框架搭建需要的包共6個,如下所示:

1 //日志包
2 commons-logging-1.1.1.jar
3 //spring核心包
4 spring-aop-4.0.6.RELEASE.jar
5 spring-beans-4.0.6.RELEASE.jar
6 spring-context-4.0.6.RELEASE.jar
7 spring-core-4.0.6.RELEASE.jar
8 spring-expression-4.0.6.RELEASE.jar

3. 配置Spring配置文件

對于Java Project來說,applicationContext.xml必須放在src目錄,如下所示:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4 xsi:schemaLocation="http://www.springframework.org/schema/beans
 5  http://www.springframework.org/schema/beans/spring-beans.xsd">
 6      <!-- 此文件默認放置在src目錄 -->
 7      <!-- id表示唯一標識,class表示類型,必須為全路徑 -->
 8     <bean id="student" class="com.hex.first.Student">
 9         <property name="id" value="1"></property>
10         <property name="name" value="hex"></property>
11         <property name="age" value="20"></property>
12     </bean>
13 </beans>

對于配置文件中的Student類,定義如下:

Spring的基礎環(huán)境如何搭建

 1 package com.hex.first;
 2 
 3 /**
 4  * 定義一個學生類
 5  * @author Administrator
 6  *
 7  */
 8 public class Student {
 9     
10     /*
11      * 學生ID
12      */
13     private int id;
14 
15     /*
16      * 學生姓名
17      */
18     private String name;
19     
20     /**
21      * 年齡
22      */
23     private int age;
24     
25     public int getId() {
26         return id;
27     }
28     public void setId(int id) {
29         this.id = id;
30     }
31     public String getName() {
32         return name;
33     }
34     public void setName(String name) {
35         this.name = name;
36     }
37     public int getAge() {
38         return age;
39     }
40     public void setAge(int age) {
41         this.age = age;
42     }
43     
44     @Override
45     public String toString() {
46         // TODO Auto-generated method stub
47         return "ID="+id+",Name="+name+",Age="+age;
48     }
49 }

View Code

4. 聲明對象

對于常規(guī)聲明對象和采用Spring獲取對象的方式如下:

Spring的基礎環(huán)境如何搭建

 1 //常規(guī)New對象方法聲明一個對象
 2 Student student=new Student();
 3 student.setId(1);
 4 student.setName("hex");
 5 student.setAge(20);
 6 System.out.println(student);
 7 //通過Spring進行注入,Spring上下文對象
 8 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
 9 //從Spring的IOC容器中獲取id為student的bean對象
10 Student student01=(Student) context.getBean("student");
11 System.out.println(student01);

View Code

5. 測試結果

如下所示:

Spring的基礎環(huán)境如何搭建

采用Spring方式和傳統(tǒng)方式的區(qū)別有哪些

傳統(tǒng)方式全部采用硬編碼的方式,一旦有變動,就需要修改代碼,而Spring采用注入的方式,將可變的東西放在配置文件中,便于修改。

1. 首先假設一種場景,學生有一個學習課程的需求

關于課程的接口(ICourse),定義如下:

Spring的基礎環(huán)境如何搭建

 1 /**
 2  * 定義一個課程接口
 3  * @author Administrator
 4  *
 5  */
 6 public interface ICourse {
 7     
 8     /**
 9      * 學習
10      */
11     void learn();
12 }

View Code

分別有兩個實現(xiàn)類:JavaCourse和HtmlCourse,代碼如下:

Spring的基礎環(huán)境如何搭建

 1 package com.hex.first;
 2 
 3 /**
 4  * 學習Java課程
 5  * @author Administrator
 6  *
 7  */
 8 public class JavaCourse implements ICourse {
 9 
10     @Override
11     public void learn() {
12         System.out.println("學習Java課程。。。");
13 
14     }
15 
16 }

View Code

Spring的基礎環(huán)境如何搭建

 1 package com.hex.first;
 2 
 3 /**
 4  * 學習Html課程
 5  * @author Administrator
 6  *
 7  */
 8 public class HtmlCourse implements ICourse {
 9 
10     @Override
11     public void learn() {
12         System.out.println("學習Html課程。。。");
13 
14     }
15 
16 }

View Code

如果一個學生要學習這兩門課程,有以下三種實現(xiàn)方案:

1. 第一種:原始的多態(tài)方法

在Student類中增加兩個方法,分別用來學習Java和Html,如下所示:

Spring的基礎環(huán)境如何搭建

 1     /**
 2      * 學習Java
 3      */
 4     public void learnJava(){
 5         ICourse course=new JavaCourse();
 6         course.learn();
 7     }
 8     
 9     /**
10      * 學習Html
11      */
12     public void learnHtml(){
13         ICourse course=new HtmlCourse();
14         course.learn();
15     }

View Code

調用代碼如下:

Spring的基礎環(huán)境如何搭建

1 //第1種,最原始的多態(tài)方法
2 System.out.println("第1種,最原始的多態(tài)方法:");
3 student.learnJava();
4 student.learnHtml();

View Code

備注:此方案導致學生和課程之間形成強耦合關系,假如需要增加一種學習Python語言的課程,需要增加接口的實現(xiàn)類(PythonCourse),修改Student類,增加learnPython方法,改動較大,或者有些學生只學其中一門課程,而另一些學生學兩門課程,采用此方案會比較麻煩。

2. 第二種:采用簡單工廠方法,將課程的創(chuàng)建抽離出來,由工廠統(tǒng)一管理。

在Student中增加一個學習(learn)方法:

Spring的基礎環(huán)境如何搭建

1         /**
2      * 學習通過參數(shù)區(qū)分
3      * @param name
4      */
5     public void learn(String name){
6         ICourse course=CourseFactory.getCourse(name);
7         course.learn();
8     }

View Code

增加工廠類(CourseFactory)

Spring的基礎環(huán)境如何搭建

 1 package com.hex.first;
 2 
 3 /**
 4  * 課程工廠
 5  * @author Administrator
 6  *
 7  */
 8 public class CourseFactory {
 9     
10     /**
11      * 獲取課程對象
12      * @param name
13      * @return
14      */
15     public static ICourse getCourse(String name){
16         if(name.equals("java")){
17             return new JavaCourse();
18         }else{
19             return new HtmlCourse();
20         }
21     }
22 }

View Code

然后客戶端調用時只需要傳字符串就行。如下所示:

Spring的基礎環(huán)境如何搭建

1 //第2種,簡單工廠方法
2 System.out.println("第2種,簡單工廠方法:");
3 student.learn("java");
4 student.learn("html");

View Code

備注:此方案雖然將對象的創(chuàng)建剝離出來,由工廠進行管理,但是課程的類型還是硬編碼的,還是不夠完善。

3. 第三種:采用Spring的方式,實現(xiàn)對象的動態(tài)注入

在學生類中增加學習方法,參數(shù)是ICourse接口:

Spring的基礎環(huán)境如何搭建

1         /**
2      * 傳遞接口
3      * @param course
4      */
5     public void learn(ICourse course){
6         course.learn();
7     }
8

View Code

在Spring配置文件中,配置要注入的對象:

1 <!-- 兩個對象,沒有屬性,不需要賦值 -->
2 <bean id="java" class="com.hex.first.JavaCourse"></bean>
3 <bean id="html" class="com.hex.first.HtmlCourse"></bean>

通過Spring來獲取對象,實現(xiàn)動態(tài)控制:

Spring的基礎環(huán)境如何搭建

1 //第3種,通過SpringIOC實現(xiàn)
2 System.out.println("第3種,通過SpringIOC實現(xiàn):");
3 ICourse course=(ICourse)context.getBean("java");
4 student.learn(course);
5 ICourse course2=(ICourse)context.getBean("html");
6 student.learn(course2);

View Code

以上三種方式,均可以實現(xiàn)需求,至于采用哪種方案,可以依據(jù)具體實際場景而定。

“Spring的基礎環(huán)境如何搭建”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI