1)使用构造器注入bean

实体类:用户类

public class User {
    private String name;
    private UserMessage userMessage;

    public User() {
    }

    public User(String name, UserMessage userMessage) {
        this.name = name;
        this.userMessage = userMessage;
    }

    @Override
    public String toString() {
        return "User{" + "name='" + name + '\'' + ", userMessage=" + userMessage + '}';
    }
}

实体类:用户信息类

public class UserMessage {
    private String username;
    private String password;

    public UserMessage() {
    }

    public UserMessage(String username, String password) {
        this.username = username;
        this.password = password;
    }

    @Override
    public String toString() {
        return "UserMessage{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}';
    }
}

配置文件

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

    <!-- 注册UserMessage类 -->
    <bean id="userMessage" class="entity.UserMessage">
        <constructor-arg name="username" value="scott"></constructor-arg>
        <constructor-arg name="password" value="tiger"></constructor-arg>
    </bean>

    <!-- 注册User类 -->
    <bean id="user" class="entity.User">
        <constructor-arg name="name" value="tom"></constructor-arg>
        <constructor-arg name="userMessage" ref="userMessage"></constructor-arg>
    </bean>

</beans>

测试类

public class TestDI {
    @Test
    public void test() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = ac.getBean("user", User.class);
        System.out.println(user);
    }
}

测试结果

User{name='tom', userMessage=UserMessage{username='scott', password='tiger'}}

2)使用setter方法注入bean

实体类:用户类

public class User {
    private String name;
    private UserMessage userMessage;

    public User() {
    }

    public User(String name, UserMessage userMessage) {
        this.name = name;
        this.userMessage = userMessage;
    }

    @Override
    public String toString() {
        return "User{" + "name='" + name + '\'' + ", userMessage=" + userMessage + '}';
    }
}

实体类:用户信息类

public class UserMessage {
    private String username;
    private String password;

    public UserMessage() {
    }

    public UserMessage(String username, String password) {
        this.username = username;
        this.password = password;
    }

    @Override
    public String toString() {
        return "UserMessage{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}';
    }
}

配置文件

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

    <!-- 注册UserMessage类 -->
    <bean id="userMessage" class="entity.UserMessage">
        <property name="username" value="scott"></property>
        <property name="password" value="tiger"></property>
    </bean>

    <!-- 注册User类 -->
    <bean id="user" class="entity.User">
        <property name="name" value="tom"></property>
        <property name="userMessage" ref="userMessage"></property>
    </bean>

</beans>

测试类

public class TestDI {
    @Test
    public void test() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = ac.getBean("user", User.class);
        System.out.println(user);
    }
}

测试结果

User{name='tom', userMessage=UserMessage{username='scott', password='tiger'}}

ZackGo
3 声望3 粉丝