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>

    总结

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

  • 相关阅读:
    [国家集训队]单选错位
    [USACO08DEC]Patting Heads S 轻拍牛头
    [SCOI2007]压缩 题解
    Json常用的转换
    cookie的读入和读出
    SQLHelp帮助类
    使用FFmpeg生成HLS视频
    如何选择HLS视频码流
    MacOS下的IntelliJ IDEA & Android Studio 通用配置
    在Windows上配置Django + WSGI
  • 原文地址:https://www.cnblogs.com/AirCL/p/14350568.html
Copyright © 2011-2022 走看看