Java中Spring的創(chuàng)建和使用詳解
Spring
Spring 是?個包含了眾多?具?法的 IoC 容器。
既然是容器那么 它就具備兩個最基本的功能:
- 將對象存儲到容器(Spring)中;
- 從容器中將對象取出來。
1.創(chuàng)建 Spring 項目
使? Maven ?式來創(chuàng)建?個 Spring 項?,創(chuàng)建 Spring 項?和 Servlet 類似,總共分為以下 3 步:
- 創(chuàng)建?個普通 Maven 項?。
- 添加 Spring 框架?持(spring-context、spring-beans)。
- 添加啟動類。
1.1 創(chuàng)建?個 Maven 項?

1.2 添加 Spring 框架支持
在項?的 pom.xml 中添加 Spring 框架的?持,xml 配置如下:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.3.RELEASE</version> </dependency> </dependencies>
從上述配置中可以看出,添加的框架有 spring-context:spring 上下?,還有 spring-beans:管理對象的模塊。 寫入完成后記得刷新。

1.3 添加啟動類
最后在創(chuàng)建好的項? java ?件夾下創(chuàng)建?個啟動類,包含 main ?法即可: 、

2.存儲 Bean 對象
存儲 Bean 分為以下 2 步:
- 存儲 Bean 之前,先得有 Bean 才?,因此先要創(chuàng)建?個 Bean。
- 將創(chuàng)建的 Bean 注冊到 Spring 容器中。
具體實現(xiàn)如下。
2.1 創(chuàng)建 Bean
所謂的 Bean 就是 Java 語?中的?個普通對象,實現(xiàn)代碼如下:

2.2 將 Bean 注冊到容器
在創(chuàng)建好的項?中添加 Spring 配置?件 spring-config.xml,將此?件放到 resources 的根?錄下,如下圖所示:

Spring 配置?件的固定格式為以下內(nè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"> </beans>
接下來,再將 User 對象注冊到 Spring 中就可以,具體操作是在 <beans> 中添加如下配置:
<beans>
<bean id="user" class="org.example.User"></bean>
</beans>3.獲取并使用 Bean 對象
獲取并使? Bean 對象,分為以下 3 步:
- 得到 Spring 上下?對象,因為對象都交給 Spring 管理了,所以獲取對象要從 Spring 中獲取,那 么就得先得到 Spring 的上下?。
- 通過 Spring 上下?,獲取某?個指定的 Bean 對象。
- 使? Bean 對象。
如果取多個 Bean 的話重復(fù)以上第 2、3 步驟。
3.1 創(chuàng)建 Spring 上下?
Spring 上下?對象可使? ApplicationContext,實現(xiàn)代碼如下:
// 1.得到 Spring 的上下?對象,創(chuàng)建的時候需要配置 Spring 配置信息
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");除了 ApplicationContext 之外,我們還可以使? BeanFactory 來作為 Spring 的上下?,如下代碼所示:
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));ApplicationContext 和 BeanFactory 效果是?樣的,ApplicationContext 屬于 BeanFactory 的? 類,它們的區(qū)別如下。
ApplicationContext VS BeanFactory(常??試題)
- 繼承關(guān)系和功能??來說:Spring 容器有兩個頂級的接口:BeanFactory 和 ApplicationContext。其中 BeanFactory 提供了基礎(chǔ)的訪問容器的能?,? ApplicationContext 屬于 BeanFactory 的?類,它除了繼承了 BeanFactory 的所有功能之外,它還擁有獨(dú)特的特性, 還添加了對國際化?持、資源訪問?持、以及事件傳播等??的?持。
- 從性能??來說:ApplicationContext 是?次性加載并初始化所有的 Bean 對象,? BeanFactory 是需要那個才去加載那個,因此更加輕量。
PS:? ClassPathXmlApplicationContext 屬于 ApplicationContext 的?類,擁有 ApplicationContext 的所有功能,是通過 xml 的配置來獲取所有的 Bean 容器的。
3.2 獲取指定的 Bean 對象
// 2.加載某個 bean
User user = (User) context.getBean("user");3.2.1 注意事項
Bean 的 Id 要??對應(yīng),如下圖所示:

3.2.2 getBean ?法的更多?法
getBean() ?法有很多種重載?法,我們也可以使?其他?式來獲取 Bean 對象,?如以下這兩種: 根據(jù)類型獲取 Bean:
User user1 = context.getBean(User.class);
或以下這種,名稱 + 類型獲取 Bean:
User user2 = context.getBean("user",User.class);?者的區(qū)別:當(dāng)有?個類型被重復(fù)注冊到 spring-config.xml 中時,只能使?根據(jù)名稱獲取了,?如以下程序:


以上場景就會導(dǎo)致程序報錯,如下圖所示:

3.3 使用 Bean
public class App {
public static void main(String[] args) {
// 1.得到 Spring 上下?對象
ApplicationContext context =
new ClassPathXmlApplicationContext("spring-config.xml");
// 2.加載某個 bean
User user = (User) context.getBean("user");
// 3.調(diào)?相應(yīng)的?法
System.out.println(user.sayHi("Java"));
}
}4.總結(jié)
1. 操作容器之前,先要有容器,所以先要得到容器。
2. 存對象
a. 創(chuàng)建 Bean(普通類)。
b. 將 Bean 注冊(配置)到 spring-confing.xml 中。
3. 取對象
a. 得到 Spring 上下?,并讀取到 Spring 的配置?件。
b. 獲取某?個 Bean 對象。
c. 使? Bean 對象。 操作流程如下圖所示:

到此這篇關(guān)于Java中Spring的創(chuàng)建和使用詳解的文章就介紹到這了,更多相關(guān)Spring的創(chuàng)建和使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Maven繼承父工程時的relativePath標(biāo)簽解析用法小結(jié)
relativePath 的作用是為了找到父級工程的pom.xml,本文主要介紹了Maven繼承父工程時的relativePath標(biāo)簽解析用法小結(jié),具有一定的參考價值,感興趣的可以了解一下2024-03-03
springboot 微信授權(quán)網(wǎng)頁登錄操作流程
這篇文章主要介紹了springboot 微信授權(quán)網(wǎng)頁登錄操作流程,本文通過實例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
Spring中的@ConditionalOnProperty注解詳解
這篇文章主要介紹了Spring中的@ConditionalOnProperty注解詳解,常見的@Conditionalxxx開頭的注解我們稱之為條件注解,常見的條件注解有,簡單來講,一般是在配置類上或者是@Bean修飾的方法上,添加此注解表示一個類是否要被Spring上下文加載,需要的朋友可以參考下2024-01-01
Java中使用Java?Mail實現(xiàn)郵件服務(wù)功能示例
這篇文章主要介紹了Java中使用Java?Mail實現(xiàn)郵件服務(wù)功能的相關(guān)資料,文章還提供了一個發(fā)送郵件的示例代碼,包括創(chuàng)建參數(shù)類、郵件類和執(zhí)行結(jié)果,需要的朋友可以參考下2025-01-01

