一篇文章帶你Java Spring開(kāi)發(fā)入門(mén)
Spring概述
Spring就是為解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的,做為開(kāi)源中間件,它使用基本的JavaBean來(lái)完成以前只可能有EJB(Java企業(yè)bean)完成的事情。Spring獨(dú)立于各種應(yīng)用服務(wù)器,甚至無(wú)須應(yīng)用服務(wù)器的支持也能提供應(yīng)用服務(wù)器的功能,同時(shí)為JavaEE應(yīng)用程序開(kāi)發(fā)提供繼承的框架,是企業(yè)應(yīng)用開(kāi)發(fā)的“一站式”選擇。Spring的用途不僅限于服務(wù)器的開(kāi)發(fā),任何Java應(yīng)用都可以從Spring中受益。
Spring是一個(gè)開(kāi)源框架,它的功能都是從實(shí)際開(kāi)發(fā)中抽取出來(lái)的。其主要優(yōu)勢(shì)之一是采用分層架構(gòu),整個(gè)框架由7個(gè)定義良好的模塊(組件)構(gòu)成,它們都統(tǒng)一構(gòu)建于核心容器之上。

Spring Core:核心容器提供Spring框架的基本功能,其主要組件BeanFactory是工廠模式的實(shí)現(xiàn)。它通過(guò)控制反轉(zhuǎn)(IOC)機(jī)制,將應(yīng)用程序配置和依賴(lài)性規(guī)范與實(shí)際的程序代碼分離開(kāi)。
Spring Context:想Spring框架提供上下文信息,包括企業(yè)服務(wù)。
Spring DAO:JDBC DAO抽象層提供了有用的一場(chǎng)層次結(jié)構(gòu),用來(lái)管理異常處理和不同數(shù)據(jù)庫(kù)供應(yīng)商拋出的錯(cuò)誤信息。
Spring簡(jiǎn)單應(yīng)用
當(dāng)創(chuàng)建一個(gè)簡(jiǎn)單的Java項(xiàng)目的時(shí)候,在控制臺(tái)要求輸出“Hello world!”,如果要求輸出“Hello Beer!”等等,那么就要不斷地去修改程序源代碼。如果項(xiàng)目龐大,程序中涉及這一輸出地語(yǔ)句不止一處,有很多處,且分散在整個(gè)項(xiàng)目地源碼(往往有成千上萬(wàn))中,如此大動(dòng)干戈地改動(dòng)程序,對(duì)于一個(gè)軟件系統(tǒng)地維護(hù)來(lái)說(shuō)將是災(zāi)難性地。
package org.example;
public class TestHello {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package org.example;
public class Test
{
public static void main( String[] args )
{
TestHello testHello=new TestHello();
testHello.setMessage("Hello world!……");
System.out.println(testHello.getMessage());
}
}
下面使用Spring解決這一問(wèn)題。使用Spring實(shí)現(xiàn)程序輸出內(nèi)容地靈活改變。
Spring框架地基本使用
項(xiàng)目創(chuàng)建




添加依賴(lài)包

將下面這段依賴(lài)加入到紅色方框里面<dependencies> </dependencies>之間。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
加入完成之后,點(diǎn)擊該按鈕,稍等一會(huì)ideal自動(dòng)幫我們下載依賴(lài)包。

創(chuàng)建Spring配置文件

修改配置文件
打開(kāi)ApplicationContest.xml,對(duì)其進(jìn)行修改:
id:bean的唯一標(biāo)識(shí)符,也就是相當(dāng)于我們學(xué)的對(duì)象名。
class:bean對(duì)象所對(duì)應(yīng)的全限定名:包名+類(lèi)型。
property:相當(dāng)于給對(duì)象中的屬性設(shè)置一個(gè)值。
value:具體的值,基本數(shù)據(jù)類(lèi)型。
<?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">
<bean id="TestHello" class="org.example.TestHello">
<property name="message">
<value>Hello World!</value>
</property>
</bean>
</beans>
修改測(cè)試類(lèi)
package org.example;
import javafx.application.Application;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main( String[] args ) {
//獲取ApplicationContext對(duì)象
ApplicationContext application=new ClassPathXmlApplicationContext("ApplicationContext.xml");
//通過(guò)ApplicationContext獲得TestHello對(duì)象
//getBean()方法中的參數(shù)即為配置文件中Bean的id的值
TestHello testHello=(TestHello) application.getBean("TestHello");
System.out.println(testHello.getMessage());
}
}
運(yùn)行結(jié)果
若要程序輸出“hello Beer!”,則只需要修改配置文件中的value值即可
<value>Hello Beer!</value>

這個(gè)例子看不出來(lái)Spring的優(yōu)勢(shì),擔(dān)當(dāng)項(xiàng)目規(guī)模很大,且源代碼中有很多處這樣的輸出語(yǔ)句時(shí),Spring的有事就充分體現(xiàn)出來(lái)了。因?yàn)橛昧薙pring只需修改配置文件一個(gè)地方的value值即可讓所有的輸出都跟著一致變化,而不用逐條煩瑣地修改程序代碼啦!

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
基于opencv+java實(shí)現(xiàn)簡(jiǎn)單圖形識(shí)別程序
這篇文章主要給大家介紹了如何基于opencv+java實(shí)現(xiàn)簡(jiǎn)單圖形識(shí)別程序的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
SpringCloud URL重定向及轉(zhuǎn)發(fā)代碼實(shí)例
這篇文章主要介紹了SpringCloud URL重定向及轉(zhuǎn)發(fā)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
java雙向循環(huán)鏈表的實(shí)現(xiàn)代碼
這篇文章介紹了java雙向循環(huán)鏈表的實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-09-09
關(guān)于java String中intern的深入講解
這篇文章主要給大家介紹了關(guān)于java String中intern的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
SpringBoot3.0集成MybatisPlus的實(shí)現(xiàn)方法
本文主要介紹了SpringBoot3.0集成MybatisPlus的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
Java代理模式實(shí)例詳解【靜態(tài)代理與動(dòng)態(tài)代理】
這篇文章主要介紹了Java代理模式,結(jié)合實(shí)例形式詳細(xì)分析了java靜態(tài)代理與動(dòng)態(tài)代理模式相關(guān)概念、原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-09-09
Java 數(shù)據(jù)庫(kù)時(shí)間返回前端顯示錯(cuò)誤(差8個(gè)小時(shí))的解決方法
本文主要介紹了Java 數(shù)據(jù)庫(kù)時(shí)間返回前端顯示錯(cuò)誤(差8個(gè)小時(shí))的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
SpringFox實(shí)現(xiàn)自動(dòng)生成RESTful?API文檔
在開(kāi)發(fā)?RESTful?API?時(shí),編寫(xiě)?API?文檔是一個(gè)重要的任務(wù),這篇文章為大家介紹了如何使用?SpringFox?自動(dòng)生成?RESTful?API?文檔,并提供示例代碼,需要的可以參考一下2023-06-06

