Spring——构造器注入、p\c命令

IOC创建对象

ioc控制反转,本质:一种设计思想,依赖注入是实现IOC的一种方法。

student.java

package com.liu.pojo;

public class Student {
    
    
    private String Id;
    private int age;
    private String name;
    Student(){
    
    
        System.out.println("Student无参构造");
    }

    public Student(String id, int age, String name) {
    
    
        Id = id;
        this.age = age;
        this.name = name;
    }

    public String getId() {
    
    
        return Id;
    }

    public void setId(String id) {
    
    
        Id = id;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public String getName() {
    
    
        return name;
    }

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

    @Override
    public String toString() {
    
    
        return "Student{" +
                "Id='" + Id + '\'' +
                ", age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

无参构造

    <!--默认调用无参构造-->
    <bean id="student" class="com.liu.pojo.Student">
        <property name="name" value="银龙"/>
        <property name="age" value="22"/>
        <property name="id" value="001"/>
    </bean>

第一种 下标赋值(0开始)

	<bean id="student" class="com.liu.pojo.Student">
        <constructor-arg index="0" value="银龙"/>
        <constructor-arg index="1" value="22"/>
        <constructor-arg index="2" value="001"/>
     </bean>

第二种 通过类型创建

	<bean id="student" class="com.liu.pojo.Student">
        <constructor-arg type="java.lang.String" value="银龙"/>
        <constructor-arg type="int" value="22"/>
        <constructor-arg type="java.lang.String" value="001"/>
    </bean>

第三种 直接通过参数设置

	<bean id="student" class="com.liu.pojo.Student">
        <constructor-arg name="name" value="银龙"/>
        <constructor-arg name="age" value="22"/>
        <constructor-arg name="id" value="001"/>
    </bean>

p\c命令注入,p相当于property,c相当于constructor-arg

修改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"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>       

p命令注入

 <bean id="student" class="com.liu.pojo.Student" p:name="银龙" p:id="002" p:age="22"/>

c命令注入(注意:pojo方法中必须包含构造方法)

    <bean id="student" class="com.liu.pojo.Student" c:name="银龙2" c:id="003" c:age="223"/>

测试

import com.liu.pojo.Student;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest {
    
    
    @Test
    public void newPojo() {
    
    
        /*默认无参*/
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student.toString());
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44774287/article/details/123961377