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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

spring 04-Spring框架依赖注入基本使用

發布時間:2025/7/25 javascript 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring 04-Spring框架依赖注入基本使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • Spring的依賴注入形式實際上所有對象產生控制都要通過applicationContext.xml文件實現
  • 依賴注入必須啟動容器后才可以進行該配置文件的內部的加載操作

依賴注入之有參構造

定義一個Dept類

package cn.liang.vo; import java.util.List; public class Dept {private Integer deptno ;private String dname ; private String loc ;public Dept(Integer deptno, String dname, String loc) {super();this.deptno = deptno;this.dname = dname;this.loc = loc;}public Integer getDeptno() {return deptno;}public void setDeptno(Integer deptno) {this.deptno = deptno;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getLoc() {return loc;}public void setLoc(String loc) {this.loc = loc;}@Overridepublic String toString() {return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";}}

修改applicationContext.xml文件,進行Dept類對象的定義

<bean id="dept" class="cn.liang.vo.Dept"><constructor-arg index="0" value="10"/><constructor-arg index="1" value="Development department"/><constructor-arg index="2" value="Guangzhou"/> </bean>

測試程序

  • 通過id(dept)取得Dept類對象時,自動調用構造方法,并將以上參數進行傳遞控制
package cn.liang.test; import org.apache.log4j.Logger; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.liang.vo.Dept; import junit.framework.TestCase; public class TestMessageService2 {private static ApplicationContext ctx = null ;static {ctx = new ClassPathXmlApplicationContext("applicationContext.xml");}@Testpublic void testDeptConstructor() {Dept dept = (Dept) ctx.getBean("dept",Dept.class) ;Logger.getLogger(TestMessageService.class).info(dept); } }

輸出結果

2018-11-29 16:09:19,557 INFO [cn.liang.test.TestMessageService] - Dept [deptno=10, dname=Development department, loc=Guangzhou]

依賴注入之無參構造

定義一個Dept類

package cn.liang.vo; import java.util.List; public class Dept {private Integer deptno ;private String dname ; private String loc ;public Integer getDeptno() {return deptno;}public void setDeptno(Integer deptno) {this.deptno = deptno;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getLoc() {return loc;}public void setLoc(String loc) {this.loc = loc;}@Overridepublic String toString() {return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";}}

修改applicationContext.xml文件,進行Dept類對象的定義

  • property調用的是類中的屬性
  • 當明確指定了value屬性設置內容,容器會自動調用setter方法
<bean id="dept" class="cn.liang.vo.Dept"><property name="deptno" value="10"/><property name="dname" value="Development department"/><property name="loc" value="Guangzhou"/> </bean>

測試程序testDeptConstructor,輸出結果

2018-11-29 16:10:32,128 INFO [cn.liang.test.TestMessageService] - Dept [deptno=10, dname=Development department, loc=Guangzhou]

依賴注入之引用操作

定義一個Emp類

package cn.liang.vo;public class Emp {private Integer empno ;private String ename ;private Double sal ;private Dept dept ;public Integer getEmpno() {return empno;}public void setEmpno(Integer empno) {this.empno = empno;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public Double getSal() {return sal;}public void setSal(Double sal) {this.sal = sal;}public Dept getDept() {return dept;}public void setDept(Dept dept) {this.dept = dept;}@Overridepublic String toString() {return "Emp [empno=" + empno + ", ename=" + ename + ", sal=" + sal + ", dept=" + dept + "]";} }

修改applicationContext.xml文件,進行Dept類和Emp類對象的定義

  • 本次操作通過Emp找到Dept的關系,使用屬性ref
<bean id="emp" class="cn.liang.vo.Emp"><property name="empno" value="1234"/><property name="ename" value="Liang"/><property name="sal" value="18000.00"/><property name="dept" ref="dept"/> </bean> <bean id="dept" class="cn.liang.vo.Dept"><property name="deptno" value="10"/><property name="dname" value="Development department"/><property name="loc" value="Guangzhou"/> </bean>

測試程序

package cn.liang.test; import org.apache.log4j.Logger; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.liang.vo.Dept; import cn.liang.vo.Emp; import junit.framework.TestCase; public class TestMessageService2 {private static ApplicationContext ctx = null ;static { // 靜態代碼塊優先于所有的代碼執行,目的是為了靜態屬性初始化ctx = new ClassPathXmlApplicationContext("applicationContext.xml");}@Testpublic void testEmpConstructor() {Emp emp = (Emp) ctx.getBean("emp",Emp.class) ;Logger.getLogger(TestMessageService.class).info(emp); } }

輸出結果

2018-11-29 16:23:05,418 INFO [cn.liang.test.TestMessageService] - Emp [empno=1234, ename=Liang, sal=18000.0, dept=Dept [deptno=10, dname=Development department, loc=Guangzhou]]

依賴注入之p命名空間操作

  • p命名空間的核心本質是能通過一行配置就可以解決多行問題

主要核心配置

xmlns:p="http://www.springframework.org/schema/p"

主要語法

<bean id="dept" class="cn.liang.vo.Dept" p:deptno="10" p:dname="Development department" p:loc="Guangzhou"/> <bean id="emp" class="cn.liang.vo.Emp" p:empno="1234" p:ename="Liang" p:sal="18000.00" p:dept-ref="dept"/>

測試程序testEmpConstructor,輸出結果

2018-11-29 16:28:41,085 INFO [cn.liang.test.TestMessageService] - Emp [empno=1234, ename=Liang, sal=18000.0, dept=Dept [deptno=10, dname=Development department, loc=Guangzhou]]

轉載于:https://www.cnblogs.com/liangjingfu/p/10039314.html

總結

以上是生活随笔為你收集整理的spring 04-Spring框架依赖注入基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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