spring 注入bean,springmvc注入bean
chanong
|在元素内或元素内定义的Bean 称为内部Bean。
1. 使用setter 方法注入内部bean 您可以使用setter 方法注入内部bean。现在,只需再次使用该元素,并按以下格式在标签下方的元素中定义一个内部bean:
xml version='1.0'encoding='UTF-8' . 注意:内部bean 是匿名的,因此您不需要指定它们的ID 和名称。即使指定了,IoC 容器也不会使用它作为区分bean 的标识符,并且会忽略bean 的Scope 标记。因此,内部Bean 几乎总是匿名的,并且总是与外部Bean 一起创建。内部Bean 不能注入到它所在的Bean 之外的任何其他Bean 中。
1.1 示例下面的示例展示了如何使用setter 方法注入内部bean。
1. 创建一个名为my-spring-demo2 的新Java 项目。
2. 在net.bianheng.c包中,使用以下代码创建一个名为Dept的类。
package net.bianheng.c; public class Dept {//部门编号private String deptNo;//部门名称private String deptName; public void setDeptNo(String deptNo) {this.deptNo=deptNo;} public void setDeptName(String deptName) { this.deptName=deptName;}@Overridepublic String toString() {return '部门{' +'deptNo='' + deptNo + '\'' +', deptName='' + deptName + '\'' +'}' ;}}3、在net.bian Cheng.c包下创建一个名为Employee的类,代码如下。
package net.bianheng.c; public class Employee { //员工编号private String empNo; //员工姓名private String empName; //部门信息private Dept dept; public void setEmpNo(String empNo) { this.empNo=empNo ; } public void setEmpName(String empName) { this.empName=empName; } public void setDept(Dept dept) { this.dept=dept; } @Override public String toString() { return 'Employee{' + 'empNo=' ' + empNo + '\'' + ', empName='' + empName + '\'' + ', dept=' + dept + '}'; } }4、在src目录下创建Spring配置文件Beans.xml并设置如下。
5. 在net.bianheng.c包下,使用以下代码创建一个名为MainApp的类。
包net.bianheng.c;导入org.apache.commons.logging.Log;导入org.apache.commons.logging.LogFactory;导入org.springframework.context.ApplicationContext;导入org.springframework.context.support.ClassPathXmlApplicationContext;公共class MainApp { private static Final Log LOGGER=LogFactory.getLog(MainApp.class); public static void main(String[] args) { //获取ApplicationContext容器ApplicationContext context=new ClassPathXmlApplicationContext('Beans.xml'); //获取名为employee的Bean员工=context.getBean('employee', Employee.class); //通过日志输出员工信息LOGGER.info(employee.toString()); } }6. 在MainApp方法中运行main()。这是控制台输出:
2021年12月17日10:46:06 am net.bian Cheng.c.MainApp 主要信息: Employee{empNo='001', empName='小王', dept=Dept{deptNo='004', deptName='技术部' } } 2 . 通过构造函数方法注入内部bean 您可以通过构造函数方法注入内部bean。现在,只需再次使用该元素,并按以下格式在标签下方的元素中定义一个内部bean:
bean xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' /spring-beans-3.0.xsd' bean id='.' class='.' 构造tar-arg name='.' bean class='.'constructor-arg name='.' value=' .'constructor-arg . bean Constructionor-arg beanBeans2.1 示例使用下面的示例。演示如何通过构造函数方法注入内部bean。
1. 创建一个名为my-spring-demo3 的新Java 项目。
2. 在net.bianheng.c包中,使用以下代码创建一个名为Dept的类。
package net.bianheng.c;public class Dept {//部门编号private String deptNo;//部门名称private String deptName; public Dept(String deptNo, String deptName) {this.deptNo=deptNo;this.deptName=deptName;} @Overridepublic String toString() {return 'Dept{' +'deptNo='' + deptNo + '\'' +', deptName='' + deptName + '\'' +'}';}} 3. 在net 使用以下代码在.bianheng.c包下创建一个名为Employee的类。
package net.bian Cheng.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;}@Overridepublic String toString() {return 'Employee{' +'empNo='' + empNo + '\'' +', empName=' ' + empName + '\'' +', dept=' + dept +'}';}}4、在src目录下创建Spring配置文件Beans.xml,配置如下。
5. 在net.bianheng.c包下,使用以下代码创建一个名为MainApp的类。
包net.bian Cheng.c;导入org.apache.commons.logging.Log;导入org.apache.commons.logging.LogFactory;导入org.springframework.context.ApplicationContext;导入org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {private static Final Log LOGGER=LogFactory.getLog(MainApp.class); public static void main(String[] args) {//获取ApplicationContext容器ApplicationContext context=new ClassPathXmlApplicationContext('Beans.xml');//获取BeanEmployee Employee name Employee=context.getBean('employee', Employee.class);//通过日志输出员工信息LOGGER.info(employee.toString());}} 6、在MainApp中执行main()方法。这是控制台输出:
2021年12月17日10:56:36 am net.bian Cheng.c.MainApp 关键信息: 员工{empNo='002', empName='小李', dept=Dept{deptNo='005', deptName='运维部' } }








