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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring bean的创建,生命周期

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring bean的创建,生命周期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 初探spring

  • 什么是spring
    Spirng 是分層的Java se/ee應用full-stack(web層mvc dao層jdbc模板 業務事務管理)輕量級開源框架,以IoC(inverse of control :反轉和控制) 和
    AOP(Aspect Oriented Programming: 面向切面編程)為內核。

    還能整合開源世界 著名的第三方框架和類庫

  • spring發展歷程
    1997年 EJB思想 。。。 2006年 ejb3.0

    2017 5.0版本發布

  • spring的優勢

    3.1 方便解耦,簡化開發(ioc創建dao層對象了)
    3.2 aop面向切面編程
    3.3 聲明式事務的支持(配置一片方法控制事務控制)
    3.4 方便程序測試
    3.5 方便集成各種優秀的框架
    3.6 降低JavaEE api的使用難度
    3.7 Java源碼時經典的學習范例

  • spring的體系結構

    4.1 底層 核心控制器
    beans 創建對象用的
    core 核心
    context spring的上下文
    spEl spring el表達式
    4.2 上一層
    aop,aspects,instrumentation,messaging

  • spring快速入門

    5.1 spring程序開發步驟
    5.1.1 導入spring開發的基本坐標包
    5.1.2 編寫Dao接口和實現類
    5.1.3 創建spring核心配置文件(xml文件)
    5.1.4 在spring配置文件中配置userdaoimpl
    5.1.5 使用spring的api獲得bean實例 (創建applicationContext對象)

  • spring下載地址

  • https://repo.spring.io/release/org/springframework/spring/

    2. spring bean的創建

    2.1 idea創建maven依賴的項目

    2.2 完成項目創建

    2.3 配置pom.xml, 引入maven中的依賴關系(這里引入spring框架滴)

    該文件用于管理:源代碼、配置文件、開發者的信息和角色、問題追蹤系統、組織信息、項目授權、項目的url、項目的依賴關系等等。事實上,在Maven世界中,project可以什么都沒有,甚至沒有代碼,但是必須包含pom.xml文件。


    2.4 引入框架

    <?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>org.example</groupId><artifactId>spring_02</artifactId> <!-- 項目名 --><version>1.0-SNAPSHOT</version><dependencies> <!-- 導入依賴關系 spring框架 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.10.RELEASE</version></dependency><dependency><groupId>junit</groupId> <!-- junit 用來測試@Test注解 --><artifactId>junit</artifactId><version>4.13</version></dependency></dependencies></project>

    2.5 終于可以配置bean拉,啊啊啊

    • 對dao接口的實現類進行bean的創建
    package com.lovely.dao;public interface UserDao {public void save(); }
    • 實現類
    package com.lovely.dao.impl;import com.lovely.dao.UserDao;public class UserDaoImpl implements UserDao {public void save() {System.out.println("save running...");}}
    • 創建spring核心配置文件applicationContext.xml 配置bean
    <?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為唯一標識 class為類所在的全路徑1--><bean id="userDao" class="com.lovely.dao.impl.UserDaoImpl"> </bean></beans>
    • 測試創建的bean
    package com.lovely.demo;import com.lovely.dao.UserDao; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class UserDaoDemo {public static void main(String[] args) {// spring客戶端ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");// getBean(id) 來得到實體類對象UserDao dao = (UserDao) app.getBean("userDao");dao.save();} }
    • 打印結果

    • bean通過工廠方式創建

    <!-- 工廠模式 靜態方法實例bean --><bean id="userDao" class="com.lovely.Factory.StaticFactory" factory-method="getUserDao"></bean> <!-- 工廠實例方法創建bean --><bean id="factory" class="com.lovely.Factory.DynamicFactory"></bean><bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean>

    2.6 bean的作用域標簽范圍

    • bean的單例模式和多例模式
    // spring容器決定幫你創建單個userdao對象 還是多個userdao對象。<bean id="userDao" class="com.lovely.dao.impl.UserDaoImpl" scope="singleton"></bean><!-- crtl + d 快速賦值一行 scope = singleton 單個對象 scope = prototype 多例模式 -->
    • 測試
    package com.lovely.test;import com.lovely.dao.UserDao;import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringTest {@Testpublic void test1() {ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao1 = (UserDao) app.getBean("userDao");UserDao userDao2 = (UserDao) app.getBean("userDao");// 如果配置bean scope是單例模式 則只產生一個對象// 如果配置bean scope是多例的 則spring容器中每次產生一個對象System.out.println(userDao1 == userDao2);/*** bean標簽的創建時機* singleton spring web容器創建,只有一個* prototype 每次創建對象時 就會創建bean 會創建多個 gc回收*/}}

    3. bean的生命周期

    • bean對象的創建,初始化,容器銷毀,bean銷毀
    package com.lovely.dao.impl;import com.lovely.dao.UserDao;public class UserDaoImpl implements UserDao {public UserDaoImpl() {// 確定bean的生命周期 singleton prototypeSystem.out.println("user dao 創建了");}public void init() {System.out.println("user bean init...");}public void destroy() {System.out.println("user bean destory...");} }
    • 配置文件
    <bean id="userDao" class="com.lovely.dao.impl.UserDaoImpl" init-method="init" destroy-method="destroy"> </bean>
    • 測試
    @Testpublic void test2() {// bean在spring容器中的出生創建ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao dao = (UserDao) app.getBean("userDao");System.out.println(dao);app.close();}
    • 從容器的加載到對象的創建,初始化,容器銷毀,bean銷毀

    總結

    以上是生活随笔為你收集整理的spring bean的创建,生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。