1.构造方法注入
第一步:在domain包中创建一个car1类
package com.pp.domain;
public class Car1 {
private String cname;
private Double price;
Car1(String cname,Double price){
this.cname=cname;
this.price=price;
}
@Override
public String toString() {
return "Car1{" +
"cname='" + cname + '\'' +
", price=" + price +
'}';
}
}
这里创建了车的类,又两个私有属性cname、price还有构造方法,以及toString方法。
第二步:创建一个测试类写一个run方法
@Test
public void run(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Car1 c=(Car1)context.getBean("car1");
System.out.println(c);
}
注:这里的context。getBean()里面写的是配置文件中的构造方法的id
第三步:配置applicationContext.xml文件
<!--构造方法注入-->
<bean id="car1" class="com.pp.domain.Car1">
<constructor-arg index="0" value="宝马"/>
<constructor-arg index="1" value="300000"/>
</bean>
中的id一般都是该对象类名的小写,class写入类的路径
index指的是入口参数,value写值
第四步:测试结果(略)
2.SET方法注入
第一步:在domain包中创建一个car2类
package com.pp.domain;
public class Car2 {
private String cname;
private Double price;
public void setCname(String cname) {
this.cname = cname;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public String toString() {
return "Car1{" +
"cname='" + cname + '\'' +
", price=" + price +
'}';
}
}
这里创建的是car2类,属性更上面的都一样,不一样的 是使用了set方法分别可以设置cname、price.
第二步:配置配置文件
<!--set注入-->
<bean id="car2" class="com.pp.domain.Car2">
<property name="cname" value="奔驰"/>
<property name="price" value="400000"/>
</bean>
第三步:在domain下的TestC中编写测试 文件
@Test
public void run1(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Car2 c=(Car2)context.getBean("car2");
System.out.println(c);
}
第四步:测试结果(略)
3. 集合注入
第一步:在domain下编写User类
package com.pp.domain;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class User {
private String[] arrs;
private List<String> list;
private Map<String,String> map;
private Properties pro;
@Override
public String toString() {
return "User{" +
"arrs=" + Arrays.toString(arrs) +
", list=" + list +
", map=" + map +
", pro=" + pro +
'}';
}
public String[] getArrs() {
return arrs;
}
public void setArrs(String[] arrs) {
this.arrs = arrs;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public Properties getPro() {
return pro;
}
public void setPro(Properties pro) {
this.pro = pro;
}
}
如上代码,每个属性都是特殊类型。
第二步:编写配置文件
<!--集合注入-->
<bean id="user" class="com.pp.domain.User">
<property name="arrs">
<list>
<value>a</value>
<value>b</value>
<value>c</value>
</list>
</property>
<property name="list">
<list>
<value>d</value>
<value>e</value>
</list>
</property>
<property name="map">
<map>
<entry key="aa" value="yy"/>
<entry key="bb" value="yyf"/>
</map>
</property>
<property name="pro">
<props>
<prop key="username" >root</prop>
<prop key="password">123</prop>
</props>
</property>
</bean>
第三步:在TestC中编写测试方法
@Test
public void run2(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User c=(User)context.getBean("user");
System.out.println(c);
}
第四步:测试效果(略)
源码地址:https://gitee.com/yangforever/project-learning/tree/master/demo/Spring/springday2