网站救助计划
1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本
2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助,网站倒闭后可联系站长领取本站pdf内容
3.若网站能存活下来,后续将会持续更新内容
常用的依赖注入方法有构造函数注入和属性注入,除此之外,Spring还支持工厂方法注入。
在前面介绍Spring IoC时已经介绍过构造方法注入了,接下来简单介绍下属性注入和工厂方法注入
属性注入
属性注入是使用频率非常高的依赖注入方法,具体如下
class Car{
private int price;
private String name;
public void setPrice(int price){
this.price = price;
}
public void setName(String name){
this.name = name;
}
public void printCar(){
System.out.println("carName:" + name + " carPrice:" + price);
}
}
applicationContext.xml文件中配置参数值
<bean id="car" class="dao.Car">
<property name="price"><value>100</value></property>
<property name="name"><value>小推车</value></property>
</bean>
测试
class test{
public static void main(String[] args) {
//初始化Spring容器ApplicationContext,加载配置文件
ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
Car car = application.getBean(dao.Car.class);
car.printCar();
}
}
输出
carName:小推车 carPrice:100
工厂方法注入
由于Spring IoC容器以框架的形式提供工厂方法的功能,很少需要手动编写基于工厂方法的类,所以工厂方法注入并不常用,可以简单了解一下。 工厂方法注入可以分为静态方法注入和非静态方法注入
静态方法注入
除了上面Car类,还需要先创建一个工厂类
class CarFactory{
public static Car creatCar(){
Car car = new Car();
car.setName("路人车");
car.setPrice(200);
return car;
}
}
配置applicationContext.xml,需要指定静态方法及工厂类
<bean id="car2" class="dao.CarFactory" factory-method="creatCar"/>
测试
class test{
public static void main(String[] args) {
//初始化Spring容器ApplicationContext,加载配置文件
ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
Car car = (Car) application.getBean("car2");
car.printCar();
}
}
输出
carName:路人车 carPrice:200
非静态方法注入
非静态方法注入相比于静态方法注入要费事一些,因为需要先实例化工厂类后才可以调用工厂方法,这也是类和静态类的区别
还是先创建工厂类,这次是非静态的
class CarFactory{
public Car creatCar(){
Car car = new Car();
car.setName("路人车");
car.setPrice(300);
return car;
}
}
配置applicationContext.xml,和静态工厂方法不同,需要先实例化工厂类,所以先配置了一个工厂bean,并将car2的factory-bean指向工厂bean,factory-method指向工厂的方法
<bean id="carFactory" class="dao.CarFactory"/>
<bean id="car2" factory-bean="carFactory" factory-method="creatCar"/>
测试
class test{
public static void main(String[] args) {
//初始化Spring容器ApplicationContext,加载配置文件
ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
Car car = (Car) application.getBean("car2");
car.printCar();
}
}
输出
carName:路人车 carPrice:300
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版