在spring中,我们通过xml文件配置bean,例子:
id是我们在获取的时候需要的名字,相当于为bean取了个别名 class是我们的完整类名
p:name是我们的bean中的成员变量,并为其赋值
我们在创建bean的实例后,如果需要使用就需要用到ClassPathXmlApplicationContext实例化,然后才能获取并使用。
ClassPathXmlApplicationContext ac =new ClassPathXmlApplicationContext("applicationContext.xml");
如上图所示,然后调取getBean()方法获取获取bean
接下来就是依赖注入了,首先是属性注入:
就是属性注入。name="name" 就是我们的name成员变量,赋值world
然后我们在main方法调用一下看一下,我们这里是重写了toString()方法的。结果:
public static void main(String[] args) {
ApplicationContext ac =new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld hw=(HelloWorld) ac.getBean("helloWorld");
System.out.println(hw);
}
结果:
HelloWorld [name=world]
我们已经把name的值赋值world了
接下来是构造器注入,首先我们看下我们的HelloWorld类:
package com.fei.HelloOne;
public class HelloWorld {
public HelloWorld(String name) {
this.name = name;
}
public HelloWorld() {
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "HelloWorld [name=" + name + "]";
}
public void printHelloWorld() {
System.out.println("helloworld");
}
}
我们有个有参数的构造器,传入name,看我们的构造器传入:
我们给name赋值
value="陈邯郸"
然后我们看打印结果:
HelloWorld [name=陈邯郸]
属性注入成功!
但有时候需要几个bean配合使用,我们来看个例子,有两个bean
car:
package com.fei.HelloOne;
public class Car {
private String pinpai;
private Double price;
public void Car(String pinpai,Double price) {
this.pinpai=pinpai;
this.price = price;
}
public void Car() {
}
public String getPinpai() {
return pinpai;
}
public void setPinpai(String pinpai) {
this.pinpai = pinpai;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public String toString() {
return "Car [pinpai=" + pinpai + ", price=" + price + "]";
}
}
Person:
package com.fei.HelloOne;
public class Person {
private String name;
private Car car;
private String say;
public String getSay() {
return say;
}
public void setSay(String say) {
this.say = say;
}
@Override
public String toString() {
return "Person [name=" + name + ", car=" + car + ", say=" + say + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
}
Person bean中有个Car类,这时候我们怎么给Car类赋值呢?
首先我们配置Car bean:
然后,我们看Person怎么配置:
然后,我们测试一下:
ApplicationContext ac =new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person) ac.getBean("person1");
System.out.println(person);
结果:
Person [name=菲菲, car=Car [pinpai=byd, price=23333.0], say=还阔以]
所以,我们的bean中有其他bean可以用ref来关联赋值,其他赋值还有List,Map,set等其他赋值,有兴趣可以自己了解下