国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring中的bean標(biāo)簽詳解

這篇具有很好參考價(jià)值的文章主要介紹了Spring中的bean標(biāo)簽詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Bean標(biāo)簽基本配置

用于配置對(duì)象交由Spring 來創(chuàng)建。
默認(rèn)情況下它調(diào)用的是類中的無參構(gòu)造函數(shù),如果沒有無參構(gòu)造函數(shù)則不能創(chuàng)建成功。

基本屬性:
id:Bean實(shí)例在Spring容器中的唯一標(biāo)識(shí)
class:Bean的全限定名稱

Bean標(biāo)簽范圍配置

scope:指對(duì)象的作用范圍,取值如下:

取值范圍 說明
singleton 默認(rèn)值,單例的
prototype 多例的
request WEB 項(xiàng)目中,Spring 創(chuàng)建一個(gè) Bean 的對(duì)象,將對(duì)象存入到 request 域中
session WEB 項(xiàng)目中,Spring 創(chuàng)建一個(gè) Bean 的對(duì)象,將對(duì)象存入到 session 域中
global session WEB 項(xiàng)目中,應(yīng)用在 Portlet 環(huán)境,如果沒有 Portlet 環(huán)境那么globalSession 相當(dāng)于 session

1)當(dāng)scope的取值為singleton時(shí)

  Bean的實(shí)例化個(gè)數(shù):1個(gè)

  Bean的實(shí)例化時(shí)機(jī):當(dāng)Spring核心文件被加載時(shí),實(shí)例化配置的Bean實(shí)例

  Bean的生命周期:

對(duì)象創(chuàng)建:當(dāng)應(yīng)用加載,創(chuàng)建容器時(shí),對(duì)象就被創(chuàng)建了

對(duì)象運(yùn)行:只要容器在,對(duì)象一直活著

對(duì)象銷毀:當(dāng)應(yīng)用卸載,銷毀容器時(shí),對(duì)象就被銷毀了

2)當(dāng)scope的取值為prototype時(shí)

  Bean的實(shí)例化個(gè)數(shù):多個(gè)

  Bean的實(shí)例化時(shí)機(jī):當(dāng)調(diào)用getBean()方法時(shí)實(shí)例化Bean

對(duì)象創(chuàng)建:當(dāng)使用對(duì)象時(shí),創(chuàng)建新的對(duì)象實(shí)例

對(duì)象運(yùn)行:只要對(duì)象在使用中,就一直活著

對(duì)象銷毀:當(dāng)對(duì)象長(zhǎng)時(shí)間不用時(shí),被 Java 的垃圾回收器回收了

Bean生命周期配置

init-method:指定類中的初始化方法名稱

destroy-method:指定類中銷毀方法名稱

Bean的依賴注入入門

①創(chuàng)建 UserService,UserService 內(nèi)部在調(diào)用 UserDao的save() 方法

public class UserServiceImpl implements UserService {
	@Override
	public void save() {
         ApplicationContext applicationContext = new 
                 ClassPathXmlApplicationContext("applicationContext.xml");       	           UserDao userDao = (UserDao) applicationContext.getBean("userDao");	
          userDao.save();
 	}
 }

②將 UserServiceImpl 的創(chuàng)建權(quán)交給 Spring

<bean id="userService" class="com.zjq.service.impl.UserServiceImpl"/>

③從 Spring 容器中獲得 UserService 進(jìn)行操作

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
userService.save();

Bean的依賴注入概念

依賴注入(Dependency Injection):它是 Spring 框架核心 IOC 的具體實(shí)現(xiàn)。

在編寫程序時(shí),通過控制反轉(zhuǎn),把對(duì)象的創(chuàng)建交給了 Spring,但是代碼中不可能出現(xiàn)沒有依賴的情況。

IOC 解耦只是降低他們的依賴關(guān)系,但不會(huì)消除。例如:業(yè)務(wù)層仍會(huì)調(diào)用持久層的方法。

那這種業(yè)務(wù)層和持久層的依賴關(guān)系,在使用 Spring 之后,就讓 Spring 來維護(hù)了。

簡(jiǎn)單的說,就是坐等框架把持久層對(duì)象傳入業(yè)務(wù)層,而不用我們自己去獲取

Bean的依賴注入方式

①構(gòu)造方法

  創(chuàng)建有參構(gòu)造
public class UserServiceImpl implements UserService {
@Override
public void save() {
ApplicationContext applicationContext = new 
                 ClassPathXmlApplicationContext("applicationContext.xml"); 
    UserDao userDao = (UserDao) applicationContext.getBean("userDao");    
          userDao.save();
    }
 }
  配置Spring容器調(diào)用有參構(gòu)造時(shí)進(jìn)行注入
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.zjq.service.impl.UserServiceImpl">      		   	
    <constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>

②set方法

  在UserServiceImpl中添加setUserDao方法
public class UserServiceImpl implements UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;  
        } 
    @Override    
    public void save() {      
   		 userDao.save();
	}
}
  配置Spring容器調(diào)用set方法進(jìn)行注入
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.zjq.service.impl.UserServiceImpl">
	<property name="userDao" ref="userDao"/>
</bean>

set方法:P命名空間注入

  P命名空間注入本質(zhì)也是set方法注入,但比起上述的set方法注入更加方便,主要體現(xiàn)在配置文件中,如下:

  首先,需要引入P命名空間:
xmlns:p="http://www.springframework.org/schema/p"

其次,需要修改注入方式

<bean id="userService" class="com.zjq.service.impl.UserServiceImpl" p:userDao-
 ref="userDao"/>

Bean的依賴注入的數(shù)據(jù)類型

上面的操作,都是注入的引用Bean,除了對(duì)象的引用可以注入,普通數(shù)據(jù)類型,集合等都可以在容器中進(jìn)行注入。

注入數(shù)據(jù)的三種數(shù)據(jù)類型

普通數(shù)據(jù)類型

引用數(shù)據(jù)類型

集合數(shù)據(jù)類型

其中引用數(shù)據(jù)類型,此處就不再贅述了,之前的操作都是對(duì)UserDao對(duì)象的引用進(jìn)行注入的,下面將以set方法注入為例,演示普通數(shù)據(jù)類型和集合數(shù)據(jù)類型的注入。

(1)普通數(shù)據(jù)類型的注入

public class UserDaoImpl implements UserDao {
    private String company;
    private int age;
    public void setCompany(String company) {
        this.company = company;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void save() {
        System.out.println(company+"==="+age);
        System.out.println("UserDao save method running....");   
    }
}
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="company" value="huawei"></property>
    <property name="age" value="15"></property>
</bean>

(2)集合數(shù)據(jù)類型(List)的注入

public class UserDaoImpl implements UserDao {
	private List<String> strList;
	public void setStrList(List<String> strList) {
		this.strList = strList;
	}
	public void save() {
        System.out.println(strList);
        System.out.println("UserDao save method running....");
	}
}
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="strList">
        <list>
            <value>aaa</value>
            <value>bbb</value>
            <value>ccc</value>
        </list>
    </property>
</bean>

(3)集合數(shù)據(jù)類型(List)的注入

public class UserDaoImpl implements UserDao {
	private List<User> userList;
	public void setUserList(List<User> userList) {
	this.userList = userList;  
 }
public void save() {
	System.out.println(userList);
	System.out.println("UserDao save method running....");
	}
}
<bean id="u1" class="com.zjq.domain.User"/>
<bean id="u2" class="com.zjq.domain.User"/>
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="userList">
        <list>
            <bean class="com.zjq.domain.User"/>
            <bean class="com.zjq.domain.User"/>
            <ref bean="u1"/>
            <ref bean="u2"/>       
        </list>
    </property>
</bean>

(4)集合數(shù)據(jù)類型( Map<String,User> )的注入

public class UserDaoImpl implements UserDao {
    private Map<String,User> userMap;
    public void setUserMap(Map<String, User> userMap) {
    this.userMap = userMap;
    }    
public void save() {      
	System.out.println(userMap);
	System.out.println("UserDao save method running....");
	}
}
<bean id="u1" class="com.zjq.domain.User"/>
<bean id="u2" class="com.zjq.domain.User"/>
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="userMap">
        <map>            
            <entry key="user1" value-ref="u1"/>
            <entry key="user2" value-ref="u2"/>
        </map>
    </property>
</bean>

(5)集合數(shù)據(jù)類型(Properties)的注入

public class UserDaoImpl implements UserDao {
    private Properties properties;
    public void setProperties(Properties properties) {
        this.properties = properties;
    }
	public void save() {
		System.out.println(properties);
		System.out.println("UserDao save method running....");
	}
}
<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl">
    <property name="properties">
        <props>
            <prop key="p1">aaa</prop>
            <prop key="p2">bbb</prop> 
            <prop key="p3">ccc</prop>
        </props>
    </property>
</bean>

引入其他配置文件(分模塊開發(fā))

實(shí)際開發(fā)中,Spring的配置內(nèi)容非常多,這就導(dǎo)致Spring配置很繁雜且體積很大,所以,可以將部分配置拆解到其他配置文件中,而在Spring主配置文件通過import標(biāo)簽進(jìn)行加載

<import resource="applicationContext-xxx.xml"/>

本文內(nèi)容到此結(jié)束了,
如有收獲歡迎點(diǎn)贊??收藏??關(guān)注??,您的鼓勵(lì)是我最大的動(dòng)力。
如有錯(cuò)誤?疑問??歡迎各位指出。
主頁:共飲一杯無的博客匯總?????

保持熱愛,奔赴下一場(chǎng)山海。??????文章來源地址http://www.zghlxwxcb.cn/news/detail-481128.html

到了這里,關(guān)于Spring中的bean標(biāo)簽詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring | Spring中的Bean--上

    Spring | Spring中的Bean--上

    Spring 可以被看作是個(gè)一個(gè) 大型工廠 , 這個(gè)工廠的 作用 就是 生產(chǎn)和管理Sping容器中的Bean 。如果想要在項(xiàng)目中使用這個(gè)工廠,就需要開發(fā)者對(duì)Spring的 配置文件 進(jìn)行 配置 。 Spring容器 支持 XML 和 Properties 兩種格式的 配置文件 ,在實(shí)際開發(fā)中, 最常使用 的就是 XML格式 的配置

    2024年01月22日
    瀏覽(66)
  • Spring 中的 Bean

    歡迎來到本篇文章,鴿了好久了,今天繼續(xù)寫下 Spring 的內(nèi)容: Spring 中 Bean 的基本概念、基本寫法和 3 種實(shí)例化 Bean 的方式等。 我們回顧下,什么是 Bean?這在上一篇文章 Spring 核心概念之一 IoC 中說過了,簡(jiǎn)而言之,一句話: 被 Spring IoC 管理的對(duì)象,就是 Bean。 一個(gè) Sprin

    2024年02月10日
    瀏覽(17)
  • Spring框架中的Bean

    在Spring框架中,Bean是指一個(gè)由Spring容器管理的對(duì)象。這個(gè)對(duì)象可以是任何一個(gè)Java類的實(shí)例,例如數(shù)據(jù)庫(kù)連接、業(yè)務(wù)邏輯類、控制器等等。Bean實(shí)例的創(chuàng)建和管理是由Spring容器負(fù)責(zé)的,而不是由應(yīng)用程序本身負(fù)責(zé)。 Bean的主要優(yōu)勢(shì)是可以將對(duì)象的創(chuàng)建和管理與業(yè)務(wù)邏輯分離。這

    2023年04月09日
    瀏覽(14)
  • spring中的Bean的自動(dòng)裝配

    自動(dòng)裝配是使用spring滿足bean依賴的一種方法 spring會(huì)在應(yīng)用上下文中為某個(gè)bean尋找其依賴的bean 在xml中顯式配置;(bean標(biāo)簽和property標(biāo)簽) 在java中顯式配置;(get,set方法) 隱式的bean發(fā)現(xiàn)機(jī)制和自動(dòng)裝配。(自動(dòng)裝配) Spring的自動(dòng)裝配需要從兩個(gè)角度來實(shí)現(xiàn),或者說是兩個(gè)

    2024年02月15日
    瀏覽(21)
  • Spring中的Bean是線程安全的嗎?

    其實(shí),Spring 中的 Bean 是否線程安全,其實(shí)跟 Spring 容器本身無關(guān)。Spring 框架中沒有提供線程安全的策略,因此,Spring 容器中在的 Bean 本身也不具備線程安全的特性。咱們要透徹理解這個(gè)結(jié)論,我們首先要知道 Spring 中的 Bean 是從哪里來的。 在 Spring 容器中,除了很多 Spring 內(nèi)

    2024年02月11日
    瀏覽(16)
  • 詳解Spring Bean的生命周期

    詳解Spring Bean的生命周期

    Spring Bean的生命周期包括以下階段: 1. 實(shí)例化Bean 對(duì)于BeanFactory容器,當(dāng)客戶向容器請(qǐng)求一個(gè)尚未初始化的bean時(shí),或初始化bean的時(shí)候需要注入另一個(gè)尚未初始化的依賴時(shí),容器就會(huì)調(diào)用createBean進(jìn)行實(shí)例化。 對(duì)于ApplicationContext容器,當(dāng)容器啟動(dòng)結(jié)束后,便實(shí)例化所有的bean。

    2024年02月14日
    瀏覽(24)
  • 【Spring Boot Bean 注入詳解】

    什么是 Bean 注入? 在 Spring 中,Bean 是應(yīng)用程序的核心構(gòu)建塊。Bean 是由 Spring IoC 容器管理的對(duì)象,通過依賴注入實(shí)現(xiàn)對(duì)象之間的解耦。 Spring Boot 中的 Bean 注入 在 Spring Boot 中,Bean 注入通常通過 @Autowired 、 @Component 、 @Service 、 @Repository 等注解實(shí)現(xiàn)。 @Autowired 用于自動(dòng)裝配

    2024年02月21日
    瀏覽(19)
  • 一文詳解Spring Bean循環(huán)依賴

    一文詳解Spring Bean循環(huán)依賴

    一、背景 有好幾次線上發(fā)布老應(yīng)用時(shí),遭遇代碼啟動(dòng)報(bào)錯(cuò),具體錯(cuò)誤如下: 眨眼一看,這不就是Spring Bean循環(huán)依賴報(bào)錯(cuò)嗎?腦海立馬閃過那些年為了進(jìn)阿里面試時(shí)被死亡N連問的場(chǎng)景,那時(shí)我們都知道Spring已經(jīng)支持bean循環(huán)依賴,為啥我們的Springboot應(yīng)用啟動(dòng)時(shí)還報(bào)這個(gè)錯(cuò)誤?帶

    2024年02月15日
    瀏覽(22)
  • Spring(三)對(duì)bean的詳解

    Spring(三)對(duì)bean的詳解

    首先我們將依賴進(jìn)行導(dǎo)入: 我們所載入的bean如下所示: 除此之外,我們進(jìn)行查看其它標(biāo)簽: 我們進(jìn)行測(cè)試: ?我們進(jìn)行測(cè)試之后如下所示: ?持此之外,IOC也可以利用讀取·文件進(jìn)行引入: 我們創(chuàng)建jdbc.properties文件,如下所示: 我們?cè)贗OC里面進(jìn)行引入: 我們進(jìn)行測(cè)試:

    2024年02月07日
    瀏覽(16)
  • 【Java Spring】SpringBoot Bean詳解

    【Java Spring】SpringBoot Bean詳解

    上一節(jié)我們介紹了五大類注解,這一節(jié)介紹方法注解@Bean,@Bean作用的對(duì)象是方法, 該注解需要搭配五大類注解同時(shí)進(jìn)行使用 ,因?yàn)轭惙椒ǖ臄?shù)量遠(yuǎn)遠(yuǎn)大于類的數(shù)量,如果使用@Bean注解標(biāo)記方法的類沒有被標(biāo)記,那么Spring Boot項(xiàng)目在啟動(dòng)時(shí)需要遍歷所有的類的所有方法,開銷無

    2024年04月27日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包