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());
}
}