标题spring学习笔记-----spring容器给java对象赋值2(应用类型赋值和有参构造器赋值)
一.引用类型的赋值
实现步骤:
1.创建maven项目
2.加入maven依赖:
spring的依赖
junit依赖
3.创建类(接口和他的实现类)
和没有使用框架一样,就是普通的类
1.创建一个school类
public class school {
private String school;
private String address;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getAddress() {
return address;
}
public void setAddress(String addreess) {
this.address = addreess;
}
@Override
public String toString() {
return "school{" +
"school='" + school + '\'' +
", address='" + address + '\'' +
'}';
}
}
2.创建一个Student类
public class Student {
private String name;
private int age;
//定义一个应用类型school
private school sc;
//生成sc的set方法
public void setSc(school sc) {
this.sc = sc;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
System.out.println(name);
}
public void setAge(int age) {
this.age = age;
System.out.println(age);
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sc=" + sc +
'}';
}
}
4.创建spring需要使用的配置文件
声明类的信息,这些类由spring创建和管理
通过spring的语法,完成对属性的赋值。(1)应用类型的set注入:spring调用set方法
<!--声明scool对象sc,并且给属性赋值-->
<bean id="sc" class="com.springproject.bao1.school">
<property name="school" value="张三"/>
<property name="address" value="成都市"/>
</bean>
<!--声明student对象stu,并且给属性赋值-->
<bean id="stu" class="com.springproject.bao1.Student">
<property name="name" value="张三"/>
<property name="age" value="40"/>
<!--应用类型,给school 的sc属性赋值,将sc对象作为参数给应用类型school类,这里的name=“sc”,sc指的是school类中定义的应用类型sc,ref=“sc”,指的是school类的java对象,把它作为参数。-->
<property name="sc" ref="sc"/>
</bean>
5.测试spring创建的对象
@Test
public void test02(){
//1.指定spring配置的文件名
String config="templates/bao1/applicationConnext.xml";
//2.创建表示spring容器的对象ac,
ApplicationContext ac = new ClassPathXmlApplicationContext(config);//创建了一个容器对象ac。
//从spring容器中getBean("配置文件中的bean的id")获取java对象stu,并且把它转成希望的类型
Student stu1=(Student) ac.getBean("stu");
System.out.println(stu1);
}
6.运行截图
二.引用类型的赋值
实现步骤:
1.创建maven项目
2.加入maven依赖:
spring的依赖
junit依赖
3.创建类(接口和他的实现类)
和没有使用框架一样,就是普通的类
1.创建一个school类
public class school {
private String school;
private String address;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getAddress() {
return address;
}
public void setAddress(String addreess) {
this.address = addreess;
}
@Override
public String toString() {
return "school{" +
"school='" + school + '\'' +
", address='" + address + '\'' +
'}';
}
}
2.创建一个student类
public class Student {
private String name;
private int age;
//声明一个应用类型
private school school;
//无参构造
public Student(){
}
//有参构造
public Student(String myname,int myage,school myschool) {
System.out.println("student的有参构造方法");
this.name=myname;
this.age=myage;
this.school=myschool;
}
public void setName(String myname) {
this.name = myname;
System.out.println(myname);
}
public void setAge(int myage) {
this.age = myage;
System.out.println(myage);
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sc=" + school +
'}';
}
}
4.创建spring需要使用的配置文件
声明类的信息,这些类由spring创建和管理
通过spring的语法,完成对属性的赋值。
(2).构造器注入:spring调用类的有参构造器,创建对象时,在构造器中完成赋值:
构造注入使用:标签
标签:一个 标签表示构造方法的一个参数
标签属性:
name:表示构造方法的形参
index:构造方法的形参的位置,从左至右(0到n)
value:构造方法的形参是简单类型,使用value
ref:构造方法的形参是应用类型,使用ref
–>
<!--声明scool类对象sc,并且给属性赋值-->
<bean id="sc" class="com.springproject.bao2.school">
<property name="school" value="清华大学"/>
<property name="address" value="北京"/>
</bean>
<!--使用name属性-->
<!--声明student类对象sc,并且给属性赋值-->
<bean id="mystudent" class="com.springproject.bao2.Student">
<constructor-arg name="myname" value="李四"/>
<constructor-arg name="myage" value="30"/>
<constructor-arg name="myschool" ref="sc"/>
</bean>
<!--使用index属性-->
<bean id="mystudent1" class="com.springproject.bao2.Student">
<constructor-arg index="0" value="张三"/>
<constructor-arg index="1" value="29"/>
<constructor-arg index="2" ref="sc"/>
<!--在这里index数值顺序无关,只要和后面的value,res匹配即可–>
例如:
<constructor-arg index="1" value="29"/>
<constructor-arg index="0" value="张三"/>
<constructor-arg index="2" ref="sc"/>
-->
</bean>
<!--省略index属性-->
<bean id="mystudent2" class="com.springproject.bao2.Student">
<constructor-arg value="王五"/>
<constructor-arg value="40"/>
<constructor-arg ref="sc"/>
</bean>
5.测试spring创建的对象
public class bao2Test {
@Test
public void test(){
String config="templates/bao2/applicationConnext.xml";
//创建容器对象ac(在执行这条语句后java对象已经被创建好了保存在getmap中)
ApplicationContext ac=new ClassPathXmlApplicationContext(config);
Student stu=(Student) ac.getBean("mystudent");
System.out.println("name属性给利用构造器给属性赋值"+'\n'+stu);
Student stu1=(Student) ac.getBean("mystudent1");
System.out.println("index属性给利用构造器给属性赋值"+'\n'+stu1);
Student stu2=(Student) ac.getBean("mystudent2");
System.out.println("index属性省略给属性赋值"+'\n'+stu2);
}
}
6.运行截图和项目结构