4、IOC创建对象的方式(基于构造函数的依赖注入)

1、通过无参构造进行创建bean对象(默认)

pojo实体类

public class User {
    private String name;

    public User() {
        System.out.println("User的无参构造执行");
    }

    public String getName() {
        return "name:"+name;
    }

    public void setName(String name) {
        this.name = name;
    }

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

配置文件:

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--
        使用Spring创建对象,在Spring中这些都称为Bean
            id:标识单个bean定义的字符串
            class:完全限定的类名
            property:相当于对象中的属性
                name:属性id
                value:属性值
                ref:引用spring容器中创建好的对象
    -->
    <bean id="user" class="com.zhixi.pojo.User">
        <property name="name" value="张志喜"/>
    </bean>
</beans>

测试类:

import com.zhixi.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("bens.xml");
        User user = (User) context.getBean("user");
        System.out.println(user.getName());
    }
}

测试结果:

User的无参构造执行
name:张志喜

无参构造的创建:(在xml文件中创建bean就表示对象已经被实例化)

 

下面通过有参构造进行创建的话:只需要修改配置文件中的bean即可!

2、通过有参构造的下标创建(必须为所有参数进行赋值)

    <bean id="user" class="com.zhixi.pojo.User">
        <!--index:表示有参构造的第一个参数 value:表示给第一个参数传入的值-->
        <constructor-arg index="0" value="张志喜"/>
    </bean>

3、通过有参构造的类型创建(必须为所有参数进行赋值)

基本类型直接写:int、double……

引用类型写完整包名

    <bean id="user" class="com.zhixi.pojo.User">
        <constructor-arg type="java.lang.String" value="zhangzhixi"/>
    </bean>

4、直接通过参数名进行创建(必须为所有参数进行赋值)

    <bean id="user" class="com.zhixi.pojo.User">
        <constructor-arg name="name" value="张三"/>
    </bean>

 

posted @ 2021-01-01 23:03  Java小白的搬砖路  阅读(226)  评论(1编辑  收藏  举报