spring——Spring 注入內部Bean——建構函式方式注入內部 Bean
阿新 • • 發佈:2022-12-10
專案依賴:
<?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>ssw</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.6</version> </dependency> </dependencies> </project>
dept類:
package org.example; public class Dept { //部門編號 private String deptNo; //部門名稱 private String deptName; public Dept(String deptNo, String deptName) { this.deptNo = deptNo; this.deptName = deptName; } @Override public String toString() { return "Dept{" + "deptNo='" + deptNo + '\'' + ", deptName='" + deptName + '\'' + '}'; } }
employee類:
package org.example; public class Employee { //員工編號 private String empNo; //員工姓名 private String empName; //部門資訊 private Dept dept; public Employee(String empNo, String empName, Dept dept) { this.empNo = empNo; this.empName = empName; this.dept = dept; } @Override public String toString() { return "Employee{" + "empNo='" + empNo + '\'' + ", empName='" + empName + '\'' + ", dept=" + dept + '}'; } }
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/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="employee" class="org.example.Employee"> <constructor-arg name="empNo" value="002"></constructor-arg> <constructor-arg name="empName" value="小李"></constructor-arg> <constructor-arg name="dept"> <!--內部bean--> <bean class="org.example.Dept"> <constructor-arg name="deptNo" value="005"></constructor-arg> <constructor-arg name="deptName" value="運維部"></constructor-arg> </bean> </constructor-arg> </bean> </beans>
執行:
package org.example; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { private static final Log LOGGER = LogFactory.getLog(Main.class); public static void main(String[] args) { //獲取 ApplicationContext 容器 ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); //獲取名為 employee 的 Bean Employee employee = context.getBean("employee", Employee.class); //通過日誌列印資訊 LOGGER.info(employee.toString()); System.out.println(employee.toString()); } }
執行結果:
=======================================================================
建構函式方式注入內部 Bean
我們可以通過構造方法注入內部 Bean。此時,我們只需要在 <bean> 標籤下的 <constructor-arg> 元素中,再次使用 <bean> 元素對內部 Bean 進行定義,格式如下。
示例
下面我們就通過一個例項,演示下如何在通過構造方法的方式注入內部 Bean。
1. 參考《第一個 Spring 程式》,新建一個名為 my-spring-demo3 的 Java 專案。
2. 在 net.biancheng.c 包中,建立一個名為 Dept 的類,程式碼如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package net.biancheng.c;
public class Dept {
//部門編號
private String deptNo;
//部門名稱
private String deptName;
public Dept(String deptNo, String deptName) {
this .deptNo = deptNo;
this .deptName = deptName;
}
@Override
public String toString() {
return "Dept{" +
"deptNo='" + deptNo + '\ '' +
", deptName='" + deptName + '\ '' +
'}' ;
}
}
|
3. 在 net.biancheng.c 包下,建立一個名為 Employee 的類,程式碼如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package net.biancheng.c;
public class Employee {
//員工編號
private String empNo;
//員工姓名
private String empName;
//部門資訊
private Dept dept;
public Employee(String empNo, String empName, Dept dept) {
this .empNo = empNo;
this .empName = empName;
this .dept = dept;
}
@Override
public String toString() {
return "Employee{" +
"empNo='" + empNo + '\ '' +
", empName='" + empName + '\ '' +
", dept=" + dept +
'}' ;
}
}
|
4. 在 src 目錄下建立 Spring 配置檔案 Beans.xml,配置如下。
5. 在 net.biancheng.c 包下,建立一個名為 MainApp 的類,程式碼如下。