SSM spring Bean基礎(chǔ)配置實(shí)例詳解
在 Spring 框架中,Bean 是一個(gè)非常核心的概念。簡(jiǎn)單來(lái)說(shuō),Bean 是 Spring 容器管理的對(duì)象,它是由 Spring 容器實(shí)例化、配置和管理的。Spring 通過(guò)依賴(lài)注入(DI)將這些 Bean 組合在一起,形成一個(gè)完整的應(yīng)用程序。
什么是 Bean?
Bean 是 Spring 框架中的一個(gè)基本單元,通常是一個(gè)普通的 Java 對(duì)象(POJO),但它被 Spring 容器管理。Spring 容器負(fù)責(zé) Bean 的生命周期,包括創(chuàng)建、初始化、依賴(lài)注入、銷(xiāo)毀等。
Bean 的特點(diǎn)
實(shí)例化:
- Spring 容器負(fù)責(zé)創(chuàng)建 Bean 的實(shí)例。
- 可以通過(guò)配置文件(XML)、注解(如
@Component
、@Service
、@Controller
、@Repository
)或 Java 配置類(lèi)來(lái)定義 Bean。
依賴(lài)注入:
- Spring 容器會(huì)自動(dòng)注入 Bean 所需的依賴(lài)關(guān)系。
- 依賴(lài)注入可以通過(guò)構(gòu)造器注入(Constructor Injection)或 setter 方法注入(Setter Injection)來(lái)實(shí)現(xiàn)。
生命周期管理:
- Spring 容器管理 Bean 的生命周期,包括初始化、使用和銷(xiāo)毀。
- 可以通過(guò)實(shí)現(xiàn)
InitializingBean
接口或定義@PostConstruct
注解的方法來(lái)定義初始化邏輯。 - 可以通過(guò)實(shí)現(xiàn)
DisposableBean
接口或定義@PreDestroy
注解的方法來(lái)定義銷(xiāo)毀邏輯。
作用域:
- Bean 可以有不同的作用域,如
singleton
(單例)、prototype
(原型)、request
(請(qǐng)求)、session
(會(huì)話)等。 - 默認(rèn)情況下,Bean 的作用域是
singleton
,即容器中只有一個(gè)實(shí)例。
基礎(chǔ)配置
<?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"> <!--name:為bean指定別名,別名可以有多個(gè),使用逗號(hào),分號(hào),空格進(jìn)行分隔--> <bean id="bookService" name="service service4 bookEbi" class="com.itheima.service.impl.BookServiceImpl"> <property name="bookDao" ref="bookDao"/> </bean>
別名配置
作用范圍
默認(rèn)創(chuàng)建為單例對(duì)象 scope 默認(rèn) singleton
運(yùn)行如下代碼
package com.itheima; import com.itheima.dao.BookDao; import com.itheima.service.BookService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class AppForScope { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); BookDao bookDao1 = (BookDao) ctx.getBean("bookDao"); BookDao bookDao2 = (BookDao) ctx.getBean("bookDao"); System.out.println(bookDao1); System.out.println(bookDao2); } }
輸出如下:
這時(shí)應(yīng)在bean對(duì)象配置里加入?yún)?shù)scope。
<?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"> <!--name:為bean指定別名,別名可以有多個(gè),使用逗號(hào),分號(hào),空格進(jìn)行分隔--> <bean id="bookService" name="service service4 bookEbi" class="com.itheima.service.impl.BookServiceImpl"> <property name="bookDao" ref="bookDao"/> </bean> <!--scope:為bean設(shè)置作用范圍,可選值為單例singloton,非單例prototype--> <bean id="bookDao" name="dao" class="com.itheima.dao.impl.BookDaoImpl" scope="prototype" /> </beans>
到此這篇關(guān)于SSM spring Bean基礎(chǔ)配置的文章就介紹到這了,更多相關(guān)SSM spring Bean配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決myBatis generator逆向生成沒(méi)有根據(jù)主鍵的select,update和delete問(wèn)題
這篇文章主要介紹了解決myBatis generator逆向生成沒(méi)有根據(jù)主鍵的select,update和delete問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09MyEclipse如何將項(xiàng)目的開(kāi)發(fā)環(huán)境與服務(wù)器的JDK 版本保持一致
我們使用MyEclipse開(kāi)發(fā)Java項(xiàng)目開(kāi)發(fā)中,偶爾會(huì)遇到因項(xiàng)目開(kāi)發(fā)環(huán)境不協(xié)調(diào),導(dǎo)致這樣那樣的問(wèn)題,在這里以把所有環(huán)境調(diào)整為JDK1.6 為例,給大家詳細(xì)介紹MyEclipse如何將項(xiàng)目的開(kāi)發(fā)環(huán)境與服務(wù)器的JDK 版本保持一致,需要的朋友參考下吧2024-04-04Windows10下的超詳細(xì)Java安裝全過(guò)程
文章主要介紹了如何在Windows?10系統(tǒng)下安裝Java開(kāi)發(fā)工具包(JDK),包括Java的下載與安裝步驟以及Java環(huán)境的配置方法,最后通過(guò)命令行驗(yàn)證Java環(huán)境是否配置成功2025-01-01如何解決Mybatis--java.lang.IllegalArgumentException: Result Maps
這兩天因?yàn)轫?xiàng)目需要整合spring、struts2、mybatis三大框架,但啟動(dòng)的時(shí)候總出現(xiàn)這個(gè)錯(cuò)誤,困擾我好久,折騰了好久終于找到問(wèn)題根源,下面小編給大家分享下問(wèn)題所在及解決辦法,一起看看吧2016-12-12SpringBoot是如何使用SQL數(shù)據(jù)庫(kù)的?
今天給大家?guī)?lái)的是關(guān)于Springboot的相關(guān)知識(shí),文章圍繞著SpringBoot是如何使用SQL數(shù)據(jù)庫(kù)的展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06JavaCV與FFmpeg音視頻流處理技巧總結(jié)大全
JavaCV是一個(gè)開(kāi)源的Java接口,它為幾個(gè)著名的計(jì)算機(jī)視覺(jué)庫(kù)(如OpenCV、FFmpeg)提供了Java封裝,這篇文章主要給大家介紹了關(guān)于JavaCV與FFmpeg音視頻流處理技巧總結(jié)的相關(guān)資料,需要的朋友可以參考下2024-05-05