zoukankan      html  css  js  c++  java
  • IOC创建对象的方式

    通过无参构造创建

    1. 编写实体类

      public class User {
          private String name;
      
          public User() {
              System.out.println("User的无参构造");
          }
      
          public void show(){
              System.out.println("你好:" + this.name);
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      }
      
    2. 编写applicationContext.xml文件

      <?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="user" class="com.jh.domain.User">
              <property name="name" value="Spring"/>
          </bean>
      </beans>
      
    3. 测试

      @Test
      public void test01() throws Exception {
          ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
          //在执行getBean之前, User对象就已经被Spring容器通过无参构造创建了
          User user = (User) context.getBean("user");
          user.show();
      }
      

    通过有参构造创建

    1. 编写实体类

      public class User {
          private String name;
      
          public User(String name) {
              System.out.println("User的带参构造");
          }
      
          public void show(){
              System.out.println("你好:" + this.name);
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      }
      
    2. 编写applicationContext.xml文件

      通过构造器注入参数有三种方式

      1. 通过index参数下标注入

        <bean id="user" class="com.jh.domain.User">
            <!-- index指构造方法 , 下标从0开始 -->
            <constructor-arg index="0" value="姓名"/>
        </bean>
        
      2. 通过参数类型注入,不推荐!

        <bean id="user" class="com.jh.domain.User">
            <constructor-arg type="java.lang.String" value="姓名"/>
        </bean>
        
      3. 通过参数名注入

        <bean id="user" class="com.jh.domain.User">
            <!-- name指参数名 -->
            <constructor-arg name="name" value="姓名"/>
        </bean>
        
    3. 测试

      @Test
      public void test01() throws Exception {
          ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
      }
      

    我们发现,即使没通过getBean获取容器的对象,User也被创建了。

    总结:在配置文件加载的时候。其中管理的对象都已经初始化了

    懂不懂,都是收获
  • 相关阅读:
    面向接口程序设计思想实践
    Block Chain Learning Notes
    ECMAScript 6.0
    Etcd Learning Notes
    Travis CI Build Continuous Integration
    Markdown Learning Notes
    SPRING MICROSERVICES IN ACTION
    Java Interview Questions Summary
    Node.js Learning Notes
    Apache Thrift Learning Notes
  • 原文地址:https://www.cnblogs.com/paidaxing0623/p/14293610.html
Copyright © 2011-2022 走看看