`

constructor讲解

阅读更多

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;

    }

}

分享到:
评论

相关推荐

    java反射之Constructor

    下面将详细讲解 Constructor 类的概述、获取构造函数的方式、构造类的实例概述等。 Constructor 概述 ------------- Constructor 类提供了关于类的单个构造方法的信息,包括构造函数的名称、参数类型、访问权限等...

    c++ 类与对象 经典讲解 看了,就会了

    构造函数 (Constructor) 是一种特殊的成员函数,用于初始化对象的状态。析构函数 (Destructor) 则是释放对象占用的资源。 五、类的其他成员 类的其他成员包括: 1. 成员变量 (Member Variables):是类的数据成员...

    matlab开发-Constructorforfunctionhandles

    本教程重点讲解如何为任何函数创建一个Constructor,使其能够在MATLAB的搜索路径之外仍能被调用。 标题中的"Constructor for function handles"指的是一个构造函数,它是一个特殊的方法,用于创建和初始化特定类型...

    8小时美女老师带你完全掌握ES6新规范讲解

    **ES6,全称ECMAScript ...在这8小时的课程中,美女老师会详细讲解以上知识点,通过实例演示和练习,帮助你扎实掌握ES6,提升你的JavaScript编程技能。记得跟随老师的步伐,一步步实践,将理论知识转化为实际操作能力。

    C++反射库--RTTR预编译包

    - 元数据:RTTR提供了一个`property`、`method`、`constructor`和`class`等类型的元对象,它们分别对应于C++中的属性、方法、构造函数和类。这些元对象包含了关于它们所代表的C++元素的各种信息,如名称、返回类型...

    java反射机制讲解

    Constructor&lt;Person&gt; constructor = c.getConstructor(String.class); Person p = constructor.newInstance("李华"); ``` 反射机制在处理动态数据和元编程时非常强大。它允许我们在运行时检查和修改类的行为,创建...

    corejava 详细讲解

    Constructor&lt;?&gt; constructor = personClass.getConstructor(String.class, int.class); Object person = constructor.newInstance("John", 25); Method sayHelloMethod = personClass.getMethod("sayHello"); ...

    详细讲解反射机制

    ### 详细讲解反射机制 反射机制是Java编程语言中一项重要的特性,允许程序在运行时检查和修改其自身的结构和行为。这一特性极大地增强了Java的灵活性和动态性,使之成为处理未知或变化的数据结构的理想选择。 ####...

    java基础之反射讲解

    ### Java基础之反射讲解 #### 一、反射概念与应用场景 **反射**是Java语言提供的一种能在运行时分析和操作类及其成员的强大功能。通过反射,我们可以在程序运行期间动态地获取类的信息,并且能够创建和操作这些类...

    C#程序设计基础教程与实训_10.constructor(1)

    &lt;br&gt; 本教程由广西机电职业技术学院的陈广老师录制,供学生课后自学用,教程以手把手的方式,通过简单实例入手,层层深入,对C#语言进行了详细而全面地讲解。 本教程面向的对象为: 1、看过一些初级C#...

    C#程序设计基础教程与实训_11.constructor(2)

    &lt;br&gt; 本教程由广西机电职业技术学院的陈广老师录制,供学生课后自学用,教程以手把手的方式,通过简单实例入手,层层深入,对C#语言进行了详细而全面地讲解。 本教程面向的对象为: 1、看过一些初级C#...

    Ioc注入讲解

    ### Ioc注入讲解 #### 1. 容器基础 ##### 1.1 容器初探 在IoC(Inverse of Control,控制反转)框架中,容器是核心概念之一,它负责对象的管理和创建。在传统的编程模式下,对象的创建通常由程序员通过`new`...

    JS 对象实例讲解和应用

    原型对象又有一个 `constructor` 属性,指向创建该原型的构造函数。 例如,我们可以创建一个 `Employee` 类,继承 `Person`: ```javascript function Employee(title) { this.title = title; } Employee....

    es6语法讲解.docx

    以下将详细讲解文档中提到的一些核心知识点: 1. **箭头函数**: - 箭头函数的语法简洁,例如`const fn = (a, b) =&gt; a + b;`,它省略了`function`关键字和花括号(当函数体只有一行时)。 - 在箭头函数中,`this`...

    Spring面试题详细讲解

    Spring面试题详细讲解 Spring 是什么? Spring 是一个轻量级的 IoC 和 AOP 容器框架。是为 Java 应用程序提供基础性服务的框架,目的是简化应用程序的开发主要由以下几个模块组成:Spring Core:核心类库,提供 ...

    单元测试实例讲解

    ### 单元测试实例讲解 #### 一、引言 单元测试是软件开发中的一个重要环节,它能够确保软件模块按照预期工作,及时发现并修复错误。对于初学者来说,掌握如何进行有效的单元测试是非常必要的。本文将通过一个具体...

    JAVA反射详细讲解

    3. 创建对象:反射允许我们在运行时创建类的对象,通过`Class`对象的`newInstance()`方法或`Constructor`对象的`newInstance()`方法实现。 4. 访问成员:反射可以让我们在运行时访问类的字段和方法。`Field`对象...

    配置后的spring讲解

    在这个“配置后的Spring讲解”中,我们将深入探讨Spring的核心概念,特别是XML配置的相关知识。 在Spring中,XML配置文件是初始化和管理Bean的主要方式。Bean是Spring框架中的核心概念,代表了应用程序中的对象。...

    让你的软件飞起来——嵌入式编程的算法研究

    2. **算法基础**:讲解常用的数据结构,如数组、链表、树、图等,并介绍基本的算法,如排序(快速排序、归并排序等)、查找(二分查找、哈希查找等)以及动态规划等。 3. **实时操作系统(RTOS)**:讨论嵌入式系统...

Global site tag (gtag.js) - Google Analytics