zoukankan      html  css  js  c++  java
  • 【Spring】学习笔记001IoC创建对象的方式

      Spring注册bean的方式根据实体类内部的有参、无参,有如下方式:

    1.无参构造

      Spring注册bean的方式默认是基于无参构造方法的,而我们知道,对于一个实体类,Java是默认存在无参构造方法的,因此在注册bean时,我们可以直接将bean注册进容器。

      例如实体类如下:

    public class User implements Serializable {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
    <bean id="userBean" class="com.aircl.domain.User">
        <property name="name" value="aircl"></property>
    </bean>
    @Test
    public void testUser(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User userBean = (User) context.getBean("userBean");
        System.out.println(userBean.getName());
    }

    2.有参构造

      Spring对于内部含有有参构造方法的实体类来说,有三种注册方式,当然,实体类中不能够再有无参构造方法,只能够存在有参构造方法,如下:

    public class User implements Serializable {
        private String name;
    
        public User(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
        <!--第一种方式:根据下标,下标对应属性在实体类中的顺序-->
        <bean id="userBean" class="com.aircl.domain.User">
            <constructor-arg index="0" value="aircl"></constructor-arg>
        </bean>
    
        <!--第二种方式:根据类型,但是这种方式存在问题,容易混淆-->
        <bean id="userBean" class="com.aircl.domain.User">
            <constructor-arg type="java.lang.String" value="aircl"></constructor-arg>
        </bean>
    
        <!--第三种方式:根据类型,推荐使用这种方式-->
        <bean id="userBean" class="com.aircl.domain.User">
            <constructor-arg name="name" value="aircl"></constructor-arg>
        </bean>

    总结

      在配置文件加载的时候,容器中管理的对象就已经初始化了。

  • 相关阅读:
    向量
    3D坐标系
    Unity坐标系详解
    5G 系统流程系列:AF 的 Traffic Routing Control 以及 UP 路径管理增强
    Git 合并冲突
    撤销 git commit
    Redis NoSQL
    Netflow/IPFIX 流量收集与分析
    Nokia 5GC 产品概览
    通过 OpenAPI 部署 Npcf_PolicyAuthorization-PostAppSessions API Service
  • 原文地址:https://www.cnblogs.com/AirCL/p/14350568.html
Copyright © 2011-2022 走看看