与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。
完整案例
Xml中的配置
<bean id="student" class="com.csdn.bean.Student">
<property name="name"><value>朱磊</value></property>
</bean>
<bean id="GreetingServliceImpl" class="com.csdn.service.GreetingServliceImpl"
autowire="constructor">
<property name="say" value="hello"></property>
</bean>
Student中的
package com.csdn.bean;
public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
}
GreetingServiceImpl中
package com.csdn.service;
import com.csdn.bean.Student;
public class GreetingServliceImpl implements GreetingServlice {
private String say;
@Override
public void say() {
System.out.println("这是我说的话" + say);
}
public void setSay(String say) {
this.say = say;
}
public GreetingServliceImpl(Student student,Student student_1) {
this.student = student;
this.student_1=student_1;
}
private Student student;
private Student student_1;
}
值得注意的是:自动装配指的是装配bean的值而不是属性值,网上很多文章都有错误我特意的查了查资料。还有就是而该bean包含student属性(同时必须提供相应的构造方法),constructor根据构造器依赖注入的。
Autodetect讲解
bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。
Xml中配置如下
<bean id="student" class="com.csdn.bean.Student">
<property name="name"><value>朱磊</value></property>
</bean>
<bean id="GreetingServliceImpl" class="com.csdn.service.GreetingServliceImpl"
autowire="autodetect">
<property name="say" value="hello"></property>
</bean>
Student中的文件如下
package com.csdn.bean;
public class Student {
private String name;
public void setName(String name) {
this.name = name;
}}
会自动的根据GreetingServiceImpl中是否有setStudent方法如果没有则查看是否有相应的构造方法,如果有则会根据相应的构造器注入依赖。如果有setStudent无相应的构造方法则会根据set方法注入依赖。
根据构造方法注入依赖
package com.csdn.service;
import com.csdn.bean.Student;
public class GreetingServliceImpl implements GreetingServlice {
private String say;
@Override
public void say() {
System.out.println("这是我说的话" + say);
}
public void setSay(String say) {
this.say = say;
}
public GreetingServliceImpl(Student student,Student student_1) {
this.student = student;
this.student_1=student_1;
}
private Student student;
private Student student_1;
}
Set方法注入依赖
package com.csdn.service;
import com.csdn.bean.Student;
public class GreetingServliceImpl implements GreetingServlice {
private String say;
@Override
public void say() {
System.out.println("这是我说的话" + say);
}
public void setSay(String say) {
this.say = say;
}
private Student student;
public void setStudent(Student student) {
this.student = student;
}
}
分享到:
相关推荐
下面将详细讲解 Constructor 类的概述、获取构造函数的方式、构造类的实例概述等。 Constructor 概述 ------------- Constructor 类提供了关于类的单个构造方法的信息,包括构造函数的名称、参数类型、访问权限等...
构造函数 (Constructor) 是一种特殊的成员函数,用于初始化对象的状态。析构函数 (Destructor) 则是释放对象占用的资源。 五、类的其他成员 类的其他成员包括: 1. 成员变量 (Member Variables):是类的数据成员...
本教程重点讲解如何为任何函数创建一个Constructor,使其能够在MATLAB的搜索路径之外仍能被调用。 标题中的"Constructor for function handles"指的是一个构造函数,它是一个特殊的方法,用于创建和初始化特定类型...
**ES6,全称ECMAScript ...在这8小时的课程中,美女老师会详细讲解以上知识点,通过实例演示和练习,帮助你扎实掌握ES6,提升你的JavaScript编程技能。记得跟随老师的步伐,一步步实践,将理论知识转化为实际操作能力。
- 元数据:RTTR提供了一个`property`、`method`、`constructor`和`class`等类型的元对象,它们分别对应于C++中的属性、方法、构造函数和类。这些元对象包含了关于它们所代表的C++元素的各种信息,如名称、返回类型...
Constructor<Person> constructor = c.getConstructor(String.class); Person p = constructor.newInstance("李华"); ``` 反射机制在处理动态数据和元编程时非常强大。它允许我们在运行时检查和修改类的行为,创建...
Constructor<?> constructor = personClass.getConstructor(String.class, int.class); Object person = constructor.newInstance("John", 25); Method sayHelloMethod = personClass.getMethod("sayHello"); ...
### 详细讲解反射机制 反射机制是Java编程语言中一项重要的特性,允许程序在运行时检查和修改其自身的结构和行为。这一特性极大地增强了Java的灵活性和动态性,使之成为处理未知或变化的数据结构的理想选择。 ####...
### Java基础之反射讲解 #### 一、反射概念与应用场景 **反射**是Java语言提供的一种能在运行时分析和操作类及其成员的强大功能。通过反射,我们可以在程序运行期间动态地获取类的信息,并且能够创建和操作这些类...
<br> 本教程由广西机电职业技术学院的陈广老师录制,供学生课后自学用,教程以手把手的方式,通过简单实例入手,层层深入,对C#语言进行了详细而全面地讲解。 本教程面向的对象为: 1、看过一些初级C#...
<br> 本教程由广西机电职业技术学院的陈广老师录制,供学生课后自学用,教程以手把手的方式,通过简单实例入手,层层深入,对C#语言进行了详细而全面地讲解。 本教程面向的对象为: 1、看过一些初级C#...
### Ioc注入讲解 #### 1. 容器基础 ##### 1.1 容器初探 在IoC(Inverse of Control,控制反转)框架中,容器是核心概念之一,它负责对象的管理和创建。在传统的编程模式下,对象的创建通常由程序员通过`new`...
原型对象又有一个 `constructor` 属性,指向创建该原型的构造函数。 例如,我们可以创建一个 `Employee` 类,继承 `Person`: ```javascript function Employee(title) { this.title = title; } Employee....
以下将详细讲解文档中提到的一些核心知识点: 1. **箭头函数**: - 箭头函数的语法简洁,例如`const fn = (a, b) => a + b;`,它省略了`function`关键字和花括号(当函数体只有一行时)。 - 在箭头函数中,`this`...
Spring面试题详细讲解 Spring 是什么? Spring 是一个轻量级的 IoC 和 AOP 容器框架。是为 Java 应用程序提供基础性服务的框架,目的是简化应用程序的开发主要由以下几个模块组成:Spring Core:核心类库,提供 ...
### 单元测试实例讲解 #### 一、引言 单元测试是软件开发中的一个重要环节,它能够确保软件模块按照预期工作,及时发现并修复错误。对于初学者来说,掌握如何进行有效的单元测试是非常必要的。本文将通过一个具体...
3. 创建对象:反射允许我们在运行时创建类的对象,通过`Class`对象的`newInstance()`方法或`Constructor`对象的`newInstance()`方法实现。 4. 访问成员:反射可以让我们在运行时访问类的字段和方法。`Field`对象...
在这个“配置后的Spring讲解”中,我们将深入探讨Spring的核心概念,特别是XML配置的相关知识。 在Spring中,XML配置文件是初始化和管理Bean的主要方式。Bean是Spring框架中的核心概念,代表了应用程序中的对象。...
2. **算法基础**:讲解常用的数据结构,如数组、链表、树、图等,并介绍基本的算法,如排序(快速排序、归并排序等)、查找(二分查找、哈希查找等)以及动态规划等。 3. **实时操作系统(RTOS)**:讨论嵌入式系统...