美文网首页
Spring IoC/DI 03-XML 通过普通构造方法注入

Spring IoC/DI 03-XML 通过普通构造方法注入

作者: 周老一员 | 来源:发表于2020-02-21 17:46 被阅读0次

    XML 通过普通构造方法注入 Bean

    1. 创建简单 Java 类

    User(属性:name-String, age-int,getter方法和setter方法,无参构造方法[可加入打印信息],sayHello方法)

    package org.daistudy;
    public class User {
        private String name;
        private int age;
        public User() {
            System.out.println("调用User类的无参构造方法");
        }
        public void sayHello(String name){
            System.out.println("hello, " + name + "!");
        }
        public String getName() {
            return name;  
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() { 
            return age;    
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
    

    2. 在 Spring 配置文件中声明 Bean

    在 Spring 配置文件中声明 User Bean 之后,Spring 的 IoC 容器将根据 class 属性并通过反射(默认使用无参构造方法)来创建名称为指定 id 的 User 对象

    <?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="org.daistudy.User"/>
    </beans>
    

    3. 初始化 Spring 的 IoC 容器并获取 Bean

    此时 Spring 会自动加载配置文件,并根据配置文件中的内容初始化 Bean,最后通过 Spring 上下文获取 Bean

    public class Main {
        public static void main(String[] args) {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            User user = (User) context.getBean("user");
            user.sayHello("Spring");
        }
    }
    

    4. 注意

    1. context.getBean()方法可以通过 bean 的名称获取,也可以通过 bean 的类型获取,当使用后一种方法时,同类型的 bean 不能多余1个
    2. xml 配置 bean 时,可以设置 id 或 name 属性指定 bean 的名称,一般情况下,两者没有区别,特殊情况:
      • id="user1,user2"==> bean 的名称为 "user1,user2"
      • name="user1,user2"==> bean 的名称为 user1或user2

    相关文章

      网友评论

          本文标题:Spring IoC/DI 03-XML 通过普通构造方法注入

          本文链接:https://www.haomeiwen.com/subject/qhqhqhtx.html