ITKeyword,专注技术干货聚合推荐

注册 | 登录

Spring 装配Bean的构造注入

Scythe666 分享于 2016-06-23

推荐:在监听器中注入spring bean

在监听器启动之前得先加载spring bean,所以注解在监听器里是不能用的。 可以通过下面的方法获取需要的bean public void contextInitialized(ServletContextEven

2018阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=gh9qh5ki&utm_source=gh9qh5ki

在spring装配bean中还有一种Set注入的替代,那就是构造参数的注入。 set注入是一种直接方式,缺点是它假设了所 有的可变属性都可以通过set方法访问到。例如有些属性在创建时设置一次,以后不再改变。替代方式是通过构造函数设置一些属性值。还有它无法清晰表达哪些属性是必须的,哪些是可选的,构造注入的优势是通过构造强制依赖关系,不可能实例化不完全的或无法使用的bean。下面是构造器的几种注入方式: 1.通过构造函数注入 (原始方式) 2.根据构造器参数的类型 3.根据索引index注入 4.根据参数名称注入 EmployeeBean.java public class EmployeeBean {

private String name;

private Double salary;

private Dept dept;

private String sex;

// 构造器函数

public EmployeeBean(String name, Double salary, Dept dept, String sex) {

super();

this.name = name;

this.salary = salary;

this.dept = dept;

this.sex = sex;

}

@Override

public String toString() {

return "EmployeeBean [name=" + name + ", salary=" + salary + ", dept="

+ dept + ", sex=" + sex + "]";

}} Dept.java public class Dept {

private String name;

private String deptno;

public void setName(String name) {

this.name = name;

}

public void setDeptno(String deptno) {

this.deptno = deptno;

}

@Override

public String toString() {

return "Dept [name=" + name + ", deptno=" + deptno + "]";

}} spring-constructor.java <?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">

<!-- private String name; private Double salary; private Dept dept; -->

<!-- 0、通过构造函数注入 (原始方式)-->

<!-- <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean"> <constructor-arg value="王晓而" /> <constructor-arg

推荐:Spring4.0注入bean的新方法

主要介绍spring4.0的自动扫描功能,以及对bean的过滤等特性进行学习。 package com.herman.ss.test;import org.springframework.context.ApplicationContext;

value="100.0" /> <constructor-arg ref="dept" /> <constructor-arg value="男" /> </bean> -->

<!-- 下面三种解决1存在的问题 -->

<!-- 1、根据构造器参数的类型 -->

<bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean">

<constructor-arg type="java.lang.String" value="陈红均" />

<constructor-arg type="java.lang.String" value="男" />

<constructor-arg type="java.lang.Double" value="100.0" />

<constructor-arg type="www.csdn.spring.constructor.bean.Dept" ref="dept" />

</bean>

<!-- 2、根据索引index注入 -->

<!-- <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean"> <constructor-arg index="0" value="陈红均" /> <constructor-arg index="1" value="100.0" /> <constructor-arg index="2" ref="dept" /> <constructor-arg index="3" value="女" /> </bean> -->

<!-- 3、根据参数名称注入 -->

<!-- <bean id="employeeBean" class="www.csdn.spring.constructor.bean.EmployeeBean"> <constructor-arg name="name" value="陈红均" /> <constructor-arg name="salary" value="100.0" /> <constructor-arg name="dept" ref="dept" /> <constructor-arg name="sex" value="男" /> </bean>-->

<bean id="dept" class="www.csdn.spring.constructor.bean.Dept">

<property name="name" value="CSDN教育事业部" />

<property name="deptno" value="0x0001" />

</bean> </beans>

推荐:spring 配置bean的方法及依赖注入发方式

Bean 的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean 这里根据全类名配置bean <bean id="helloWord" class="com.s

在spring装配bean中还有一种Set注入的替代,那就是构造参数的注入。 set注入是一种直接方式,缺点是它假设了所 有的可变属性都可以通过set方法访问到。例如有些属性在创建时设置一次,以后不再
在线网页数据采集器

相关阅读排行


用户评论

游客

在线网页数据采集器

相关内容推荐

vivo京东自营官方旗舰店

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。