首页 > 其他分享 >对象Constructor构造函数解析详解

对象Constructor构造函数解析详解

时间:2024-03-22 09:14:07浏览次数:29  
标签:String 构造方法 sex Person 详解 Constructor 构造函数 public name

构造函数解析

构造函数解析示例,code 如下。
定义实体类:

package com.gientech.constructor;

public class Person {

    private String name;

    private int id;

    private int age;

    private String sex;


    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }


    public Person(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

新增配置文件

<?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">

    <bean id="person" class="com.gientech.constructor.Person">
        <property name="name" value="lisi"></property>
        <property name="sex" value="man"></property>
<!--        <constructor-arg name="sex" value="man"></constructor-arg>-->
<!--        <constructor-arg name="name" value="zhangsan"></constructor-arg>-->
    </bean>
</beans>

新增启动类

package com.gientech.constructor;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ConstructorTest {

    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("constructortest.xml");
        Person bean = ac.getBean(Person.class);
        System.out.println(bean.getName());
    }
}

构造函数解析执行顺序如下:
doCreateBean -> createBeanInstance -> autowireConstructor -> ConstructorResolver.autowireConstructor
determineCandidateConstructors 方法作用是获取构造器,有4种场景

  • 如果有多个Autowired,required为true,不管有没有默认构造方法,会报异常
  • 如果只有一个Autowired,required为false,没有默认构造方法,会报警告
  • 如果没有Autowired注解,定义了两个及以上有参数的构造方法,没有无参构造方法,且不是通过xml配置文件进行加载,使用@Component进行加载就会报错
  • 其他情况都可以,但是以有Autowired的构造方法优先,然后才是默认构造方法

标签:String,构造方法,sex,Person,详解,Constructor,构造函数,public,name
From: https://www.cnblogs.com/zgcy123456/p/18088274

相关文章

  • 二叉树详解
    二叉树详解一:什么是树1:概念2:树的特点##3:树的一些重要概念二:二叉树1:二叉树的概念2:二叉树的特点3:特殊的二叉树:三:二叉树的性质四:二叉树的存储一:什么是树1:概念树是一种非线性的数据结构,它是由n个节点组成的一个具有层次关系的集合,把它叫做树的原因是因......
  • ConcurrentHashMap底层详解
    ConcurrentHashMap是线程安全且高效的HashMap。一、使用原因在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于此产生了ConcurrentHashMap。1.线程不安全的HashMap在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率......
  • nmon监控工具使用方法详解
    在信息化时代,系统监控对于确保服务器和应用的稳定运行至关重要。nmon(Nigel’sMonitor)作为一款强大的性能监控工具,以其直观、全面的监控能力,赢得了众多系统管理员的青睐。本文将详细介绍nmon监控工具的使用方法,帮助读者更好地利用这一工具,提升系统监控效率。一、nmon监控工......
  • JavaScript初识及基本语法详解
    JavaScript是一种轻量级的解释型或即时编译型的编程语言。它最初被设计为在浏览器中用于与网页进行交互,但随着时间的推移,它已经成为了后端开发、游戏开发、桌面应用开发等多个领域的重要工具。1.JavaScript初识1.1历史与用途历史:由BrendanEich在1995年开发,最初......
  • 多线程并发聊天室简单实现代码详解 -- 涉及网络编程,多线程和线程同步的知识
            本项目主要完成多线程并发聊天室的基础功能,即多个客户端之间通过服务器可以实现群发消息,重点在于学习网络编程,多线程和线程同步的基础知识(基于Linux)。    下面我会详解每一部分的代码。1.主线程        1.1首先由于是自己在电脑里面测试,......
  • B树B+树,字典树详解,哈夫曼树博弈树
    目录B树:B-TreeB+树字典树:TrieTree 哈夫曼树博弈树B树:B-Tree多路平衡搜索树1.M阶B树,就是M叉(M个指针)。2.每个节点内记录个数<=M-1。3.根节点记录个数>=1。4.其余节点内记录个数>=ceil(m/2)-1(向上取整)。5.每个节点内的记录从左至右从大到小有序。6.当前记录的左......
  • C++ 合成默认构造函数
    问题:C++面向对象编程时,如果我们没有声明任何构造函数constructor,按照以前最初学习,说编译器会自动合成一个默认的无参构造函数defaultconstructor,但是事实确实是这样吗,存不存在例外呢,即使有合成构造函数,那么它又将对类数据进行怎样的初始化呢?1.问题一如果我们没有声明任何构造......
  • Impostors详解——纸片构筑的美丽幻觉
    【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!写在前面早前,我截帧分析了《CallofDragons》,具体内容可以看《〈CallofDragons〉渲染截帧分析与迷思》,在其中提到了《CallofDragons》中使用......
  • Linux系统下的文件描述符fd详解
    文章目录文件描述符本作者从代码及源码的角度来总结探究文件描述符fd参考:韦东山Linux嵌入式视频文件描述符Linux系统下一切皆文件。文件描述符是操作系统中用来唯一标识一个已打开文件的整数。本质上来说就是索引,即根据索引值寻找到对应的文件,可对其进行相应......
  • Java基础内容:第七章面向对象(下)编程题详解
            建了一个群:908722740 ,欢迎小伙伴门的加入,平时可以互相学习交流,不管是学习还是工作上的都可以多多交流,本人在校学生,技术有限,错误的地方欢迎指正。目录一、多态案例素材【1】乐手弹奏乐器【2】比萨制作【3】购买饮料二、接口案例素材【1】兔子和青蛙【......