日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

03-spring bean

發(fā)布時(shí)間:2025/5/22 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03-spring bean 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 一、spring 基于 xml 的 IOC 環(huán)境搭建和入門
    • 1.pom.xml
    • 2.類
    • 3. bean.xml
    • 4.主函數(shù)
    • 5.總結(jié)
  • 二、BeanFactory和ApplicationContext的區(qū)別
  • 三、spring 中 bean 的細(xì)節(jié)之三種創(chuàng)建 Bean 對(duì)象的方式
    • 1. 第一種方式:使用默認(rèn)構(gòu)造函數(shù)創(chuàng)建。
    • 2.第二種方式:
    • 3.第三種方式:
  • 四、spring中bean的細(xì)節(jié)之作用范圍
    • 1.bean標(biāo)簽訂單scope屬性:
    • 2.bean 對(duì)象的生命周期
      • Ⅰ單例對(duì)象
      • Ⅱ多例對(duì)象

一、spring 基于 xml 的 IOC 環(huán)境搭建和入門

1.pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>spring02</groupId><artifactId>spring02</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.9.RELEASE</version></dependency></dependencies></project>

2.類

將上次的耦合和解耦的筆記放進(jìn)去

3. bean.xml

<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--把對(duì)象的創(chuàng)建交給 spring 來管理--><bean id="accountService" class="com.service.impl.AccountServiceImpl"/><bean id="accountDao" class="com.dao.impl.AccountDaoImpl"/> </beans>

4.主函數(shù)

public class Client {/*** 獲取 spring 的 ioc 核心容器,并根據(jù) id 獲取對(duì)象* @param args*/public static void main(String[] args) {ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");IAccountService accountService=(IAccountService)ac.getBean("accountService");IAccountDao accountDao=ac.getBean("accountDao",IAccountDao.class);System.out.println(accountService);System.out.println(accountDao);} }

5.總結(jié)

ApplicationContext的三個(gè)常用實(shí)現(xiàn)類:

  • ClassPathXmlApplicationContext:他可以加載類路徑下的配置文件,要求配置文件必須在類路徑下,不在的話,加載不了。

  • FileSystemXmlApplicationContext:他可以加載磁盤任意路勁下的配置文件(必須有訪問權(quán)限)
  • AnnotationConfigApplicationContext:它是用于讀取注解創(chuàng)建容器的。

  • 獲取配置文件對(duì)應(yīng)實(shí)現(xiàn)類有兩種方法:

  • 強(qiáng)制轉(zhuǎn)換
    • IAccountService accountService=(IAccountService)ac.getBean("accountService");
  • IAccountDao accountDao=ac.getBean("accountDao",IAccountDao.class);
  • 二、BeanFactory和ApplicationContext的區(qū)別

    public static void main(String[] args) {ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");IAccountService accountService=(IAccountService)ac.getBean("accountService");IAccountDao accountDao=ac.getBean("accountDao",IAccountDao.class);System.out.println(accountService);System.out.println(accountDao);/*-------BeanFactory-------------*/Resource resource=new ClassPathResource("bean.xml");BeanFactory beanFactory=new XmlBeanFactory(resource);IAccountService as=(IAccountService)beanFactory.getBean("accountService");System.out.println(as);} }

    核心容器接口兩個(gè)引發(fā)出的問題:

  • ApplicationContext: (單例對(duì)象適用)

    他在創(chuàng)建核心容器時(shí),創(chuàng)建對(duì)象采取的策略是采用立即加載的方式。也就是說,只要一讀完配置文件馬上就創(chuàng)建配置文件的對(duì)象。

  • BeanFactory: (多例對(duì)象適用)

    他在創(chuàng)建核心容器時(shí),創(chuàng)建對(duì)象采取的策略是采用延遲加載的方式。也就是說,什么時(shí)候根據(jù) id 獲取對(duì)象了,什么時(shí)候才真正的創(chuàng)建對(duì)象。

  • 三、spring 中 bean 的細(xì)節(jié)之三種創(chuàng)建 Bean 對(duì)象的方式

    1. 第一種方式:使用默認(rèn)構(gòu)造函數(shù)創(chuàng)建。

    • 在spring的配置文件中使用bean標(biāo)簽,配以id和class屬性之后,且沒有其他屬性和標(biāo)簽時(shí)。 采用的就是默認(rèn)構(gòu)造函數(shù)創(chuàng)建bean對(duì)象,此時(shí)如果類中沒有默認(rèn)構(gòu)造函數(shù),則對(duì)象無法創(chuàng)建
    <bean id="accountService" class="com.service.impl.AccountServiceImpl"/> <bean id="accountDao" class="com.dao.impl.AccountDaoImpl"/>

    2.第二種方式:

    • 使用普通工廠中的方法創(chuàng)建對(duì)象(使用某個(gè)類中的方法創(chuàng)建對(duì)象,并存入spring容器)
    package com.factory;import com.service.IAccountService; import com.service.impl.AccountServiceImpl;/* 模擬一個(gè)工廠類(該類可能存在于jar包中,我們無法通過修改源碼的方式來提供默認(rèn)構(gòu)造函數(shù)) */ public class InstanceFactory {public IAccountService getAccountService(){return new AccountServiceImpl();} } <bean id="instanceFactory" class="com.factory.InstanceFactory"/> <bean id="accountService2" factory-bean="instanceFactory" factory-method="getAccountService"/>

    3.第三種方式:

    • 使用工廠中的靜態(tài)方法創(chuàng)建對(duì)象(使用某個(gè)類中的靜態(tài)方法創(chuàng)建對(duì)象,并存入spring容器)
    package com.factory;import com.service.IAccountService; import com.service.impl.AccountServiceImpl;/* 模擬一個(gè)工廠類(該類可能存在于jar包中,我們無法通過修改源碼的方式來提供默認(rèn)構(gòu)造函數(shù)) */ public class StaticFactory {public static IAccountService getAccountService(){return new AccountServiceImpl();} } <bean id="accountService3" class="com.factory.StaticFactory" factory-method="getAccountService"/>

    四、spring中bean的細(xì)節(jié)之作用范圍

    bean 的作用范圍調(diào)整

    1.bean標(biāo)簽訂單scope屬性:

    作用:用于指定bean作用范圍 取值:常用的就是單例的于多例的

  • singleton:單例的(默認(rèn)值)

  • prototype:多例的

  • request:作用與web應(yīng)用的請(qǐng)求范圍

  • session:作用于web應(yīng)用的會(huì)話范圍

  • global-session:作用于集群環(huán)境的會(huì)話范圍(全局會(huì)話范圍),當(dāng)不是集群環(huán)境時(shí),它就是session

  • 對(duì)于 global-session 的理解

    global session 可以理解為全局 session

    2.bean 對(duì)象的生命周期

    Ⅰ單例對(duì)象

  • 出生:當(dāng)容器創(chuàng)建時(shí)對(duì)象出生

  • 活著:只要容器還在,對(duì)象一直活著

  • 死亡:單例對(duì)象的生命周期和容器相同多例對(duì)象

  • 實(shí)現(xiàn)類

    public class AccountServiceImpl implements IAccountService {private IAccountDao accountDao=new AccountDaoImpl();public void saveAccount() {accountDao.saveAccount();}public void init(){System.out.println("對(duì)象初始化");}public void destroy(){System.out.println("對(duì)象銷毀");} }

    xml 文件

    <bean id="accountService" class="com.service.impl.AccountServiceImpl" scope="singleton"init-method="init" destroy-method="destroy"/><bean id="accountDao" class="com.dao.impl.AccountDaoImpl"/>

    主函數(shù)

    public class Client {public static void main(String[] args) {ClassPathXmlApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");IAccountService as=ac.getBean("accountService",IAccountService.class);as.saveAccount();ac.close();} }

    運(yùn)行結(jié)果

    對(duì)象初始化 保存成功 對(duì)象銷毀

    Ⅱ多例對(duì)象

  • 出生:當(dāng)我們使用時(shí) spring 框架為我們創(chuàng)建

  • 活著:對(duì)象只要是在使用過程中就一直活著

  • 死亡:當(dāng)對(duì)象長(zhǎng)時(shí)間不用,且沒有別的對(duì)象引用時(shí),由Java的垃圾回收器回收

  • 轉(zhuǎn)載于:https://www.cnblogs.com/zuiren/p/11415413.html

    總結(jié)

    以上是生活随笔為你收集整理的03-spring bean的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 超碰97人人射妻 | 国产91综合| 欧美黄色一级网站 | 欧美日韩一区二区三区四区 | 色综合成人 | 亚洲专区在线 | 久热精品在线视频 | 97免费公开视频 | 久久久久久久久99精品 | 97人妻精品一区二区免费 | 亚洲色偷精品一区二区三区 | 亚洲剧情av | 国产片在线 | 青青导航 | 97一级片 | 四虎tv| 五月天色婷婷综合 | 91麻豆成人精品国产 | 红桃成人网 | 超碰国产在线 | 中文字幕 欧美日韩 | 91香蕉一区二区三区在线观看 | 警察高h荡肉呻吟男男 | 91精品91久久久中77777老牛 | 精品无码成人久久久久久免费 | 成人国产免费观看 | 大桥未久中文字幕 | 在线观看日韩国产 | 高中男男gay互囗交观看 | 69视频一区二区三区 | 三八激情网 | 三年中文在线观看免费观看 | 98国产视频 | 熟女人妻aⅴ一区二区三区60路 | av一本在线 | 琪琪射| 激情综合丁香五月 | 欧美日韩一区二区三区国产精品成人 | 亚洲情趣 | xxxx日本高清| 亚洲国产婷婷香蕉久久久久久99 | 狠狠躁日日躁夜夜躁av | 99久精品| 91av一区二区三区 | 日韩欧美一二三 | 国产精品嫩草影院精东 | 爱情岛论语亚洲入口 | 人妻无码一区二区三区 | 国产精品欧美激情 | 成人欧美一区二区三区黑人动态图 | 国产久视频 | 成人1区2区| 国产日韩av在线播放 | 国产成人免费网站 | 好吊色视频988gao在线观看 | 日日夜夜天天干 | 人人爱人人插 | 一级视频免费观看 | 国产吞精囗交免费视频网站 | 欧美特级毛片 | 九九激情网 | 久久橹 | 亚洲涩综合 | 国产免费一区二区三区免费视频 | 国产一级一片免费播放 | www.日韩在线 | 俺也来俺也去俺也射 | 一区二区三区黄色片 | 香蕉网站视频 | 修女也疯狂3免费观看完整版 | 黄色美女毛片 | 日韩欧美网 | 污污视频在线看 | 亚洲精品动漫在线观看 | 欧美污污视频 | 欧美亚洲综合在线 | 伊人久久免费 | 天天舔天天干 | 亚洲精品偷拍 | 亚洲国产精彩中文乱码av | 国产主播一区二区三区 | 影音先锋精品 | 国产欧美日韩视频在线观看 | 噜噜视频 | 国产一级片免费在线观看 | 白嫩少妇激情无码 | 国产无套精品一区二区 | 男女做事网站 | 一本大道东京热无码aⅴ | 欧美激情一区二区三区在线 | 国产精品人人做人人爽 | 成人听书哪个软件好 | 亚洲图片在线视频 | 中文字幕一区二区精品 | 亚洲第一色视频 | 美女啪啪一区二区 | 高清欧美性猛交xxxx黑人猛交 | 国产精品久久久免费观看 | 美女福利在线 |