注入Bean属性---构造注入配置方案

在Spring配置文件中通过<constructor-arg>元素为构造方法传参

注意:

1、一个<constructor-arg>元素表示构造方法的一个参数,且使用时不区分顺序。

2、通过<constructor-arg>元素的index 属性可以指定该参数的位置索引,位置从0 开始。

3、<constructor-arg>元素还提供了type 属性用来指定参数的类型,避免字符串和基本数据类型的混淆。

注入不同数据类型

构造器注入案例:

创建两个实体类 Car 和Student 并封装,重写toString方法

//Car

package cn.happy.entity;

public class Car {

private String color;
private String brand;
//无参构造
public Car() { } //带参构造
public Car(String color, String brand) {
super();
this.color = color;
this.brand = brand;
} @Override
public String toString() {
return "Car [color=" + color + ", brand=" + brand + "]";
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
}
//Student类
package cn.happy.entity; public class Student {
private String name;
private String age;
private Car car; //无参构造
public Student() {
//System.out.println("Student.Student()");
} //带参构造
public Student(String name, String age, Car car) { this.name = name;
this.age = age;
this.car = car;
} @Override //重写toString方法
public String toString() {
return "Student [name=" + name + ", age=" + age + ", car=" + car + "]";
} public Car getCar() {
return car;
} public void setCar(Car car) {
this.car = car;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

在applicationContext.xml中配置如下

<!-- 构造注入 -->
<bean id="car" class="entity.Car"> <property name="brand" value="二八大杠"></property>
</bean> <bean id="student" class="entity.Student"> <constructor-arg index="0"
value="成成"></constructor-arg> <constructor-arg index="1" value="28"></constructor-arg>
<constructor-arg index="2" ref="car"></constructor-arg> </bean> p命名空间注入 <bean
id="car" class="entity.Car" p:color="black"> <property name="brand" value="贱贱牌自行车"></property>
</bean> <bean id="student" class="entity.Student" p:name="贱贱" p:age="25"
p:car-ref="car"/>

然后书写单测代码:

public void addTest(){
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
Student student=(Student) ctx.getBean("stu");
System.out.println(student);

运行后的结果:

___________________________________________________________________________________________________________________________

设值注入

applicationContext.xml中的配置

<!--设值注入 -->
<bean id="car" class="cn.happy.entity.Car">
<property name="brand" value="二手夏利"></property>
</bean> <bean id="stu" class="cn.happy.entity.Student" scope="prototype">
<property name="name" value="呵呵"></property>
<property name="age" value="13"></property>
<property name="car" ref="car"></property>
</bean>

运行结果:

________________________________________________________________________________________________________________________

P标签注入

<!-- p标签注入 -->
<bean id="car" class="cn.happy.entity.Car" p:color="red">
<property name="brand" value="奥迪"></property>
</bean> <bean id="stu" class="cn.happy.entity.Student" p:name="李四" p:age="12"
p:car-ref="car">
</bean>

运行结果

Spring 设值注入 构造注入 p命名空间注入的更多相关文章

  1. Spring学习(3)---Spring设值注入和构造注入

    (一)设值注入就是指要被注入的类中定义有一个setter()方法,并在参数中定义需要注入的对象.简单的看个例子. 建一个User类: package com.ioc; public class Use ...

  2. Spring接口编程_设值注入和构造注入

    说明: UserManagerImp是设值注入,UserManagerImp2是构造注入 接口不注入,也就是在Spring配置文件中没有接口的<bean>,但是定义的时候是用接口 priv ...

  3. 【Spring学习笔记-2.1】Spring的设值注入和构造注入

    设值注入: 先通过无参数的构造函数创建一个Bean实例,然后调用对应的setter方法注入依赖关系: 配置文件: <?xml version="1.0" encoding=& ...

  4. Java Spring学习笔记----Bean的依赖注入(设值注入方式)1

    Spring常用的两种依赖注入方式:一种是设值注入方式,利用Bean的setter方法设置Bean的属性值:另一种是构造注入,通过给Bean的构造方法传递参数来实现Bean的属性赋值: 1.设值注入方 ...

  5. 【Spring实战】—— 5 设值注入

    本篇主要讲解了Spring的最常用的功能——依赖注入. 注入的方式,是使用Getter Setter注入,平时大多的编程也都是使用这种方法. 举个简单的例子,还是表演者. 表演者有自己的属性,年龄或者 ...

  6. Spring 依赖注入 基于构造函数、设值函数、内部Beans、集合注入

    Spring 基于构造函数的依赖注入_w3cschool https://www.w3cschool.cn/wkspring/t7n41mm7.html Spring 基于构造函数的依赖注入 当容器调 ...

  7. Spring基于构造函数和设值函数的依赖注入

    基于构造函数的依赖注入 我们知道,bean标签中指定的类会进行初始化,这个初始化过程中自然会调用构造函数,那我们也可以利用这个构造函数完成依赖注入. 先创建一个类: public class Text ...

  8. Spring 基于设值函数(setter方法)的依赖注入

    当容器调用一个无参的构造函数或一个无参的静态 factory 方法来初始化你的 bean 后,通过容器在你的 bean 上调用设值函数,基于设值函数的 DI 就完成了. 下述例子显示了一个类 Text ...

  9. 【转】spring 装配Bean中构造参数的注入

    转载自:http://www.bianceng.cn/Programming/Java/201307/37027.htm spring 装配Bean中构造参数的注入 spring装配bean中还有一种 ...

随机推荐

  1. 理解 Neutron FWaaS - 每天5分钟玩转 OpenStack(117)

    前面我们学习了安全组,今天学习另一个与安全相关的服务 -- FWaaS.理解概念 Firewall as a Service(FWaaS)是 Neutron 的一个高级服务.用户可以用它来创建和管理防 ...

  2. ASP.NET MVC 5调用其他Action

    引用代码: @Html.Action("Index", "BaseData", new { d = "variety" }) 后台获取参数: ...

  3. javascript中Array的操作

    concat(组合数组) join(数组转字符串) pop(删除最后一个元素) shift(删除第一个元素) push(在数组尾部添加新元素) unshift(在数组头部添加新元素) slice(不改 ...

  4. ldap部署相关,ldap双机\LAM配置管理\ldap备份还原

    前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 就单点登录实现过程进行详细记录,ldap是一切的基础,可以把它理解成一个读强写弱的文件类型数据库,统一认证我们通过 ...

  5. Guass列选主元消去法和三角分解法

    最近数值计算学了Guass列主消元法和三角分解法解线性方程组,具体原理如下: 1.Guass列选主元消去法对于AX =B 1).消元过程:将(A|B)进行变换为,其中是上三角矩阵.即: k从1到n-1 ...

  6. 定向爬虫 - Python模拟新浪微博登录

    当我们试图从新浪微博抓取数据时,我们会发现网页上提示未登录,无法查看其他用户的信息. 模拟登录是定向爬虫制作中一个必须克服的问题,只有这样才能爬取到更多的内容. 实现微博登录的方法有很多,一般我们在模 ...

  7. 支持多返回值存储过程的SqlHelper

    public readonly string connStr = ConfigurationManager.ConnectionStrings["sql"].ConnectionS ...

  8. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  9. LINQ to SQL语句(8)之Concat/Union/Intersect/Except

    适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同的集合,不会自动过滤相同项:延迟. 1.简单形式: var q = ( from c in db ...

  10. Navisworks API 简单二次开发 (自定义工具条)

    在Navisworks软件运行的时候界面右侧有个工具条.比较方便.但是在二次开发的时候我不知道在Api那里调用.如果有网友知道请告诉我.谢谢. 我用就自己设置一个工具.界面比较丑!没有美工. 代码: ...