Spring XML 方式注入Bean的几种方式——这一篇就够了~
admin2025-07-28 23:34:13【世界杯比赛赛】
目录
1、标签实现属性注入
2、标签实现构造函数初始化
3、工厂方法实现Bean实例化及属性注入
3.1、静态工厂方法注入
3.2、非静态工厂方法注入
传统的Spring项目是基于XML配置文件来实例化Bean对象,最终实现由SpringIOC容器统一管理;对于Bean的实例化和属性注入,Spring框架提供了多种方式。
1、
Java Bean定义:
package com.practice;
@Getter
@Setter
public class Owner{
private String name;
private String age;
}
@Getter
@Setter
public class Dog{
private Owner owner;
}
@Getter
@Setter
public class Cat{
private String age;
}
注意:实际Java源文件中,一个.java文件下只能包含一个public修饰的class,这里为了方便写到一起了!!!
以下是Spring XML配置文件:
2、
首先是Java Bean的定义:
package com.practice;
@Getter
@Setter
public class Owner{
private String name;
private String age;
}
public class Dog{
private Owner owner;
public Dog(Owner owner){
this.owner = owner;
}
}
以下是Spring XML配置文件:
当然,
3、工厂方法实现Bean实例化及属性注入
3.1、静态工厂方法注入
package com.practice;
public WebContextExample{
private WebApplicationContext webContext;
public WebContextExample(WebApplicationContext webContext){
this.webContext = webContext;
System.out.println("WebContextExample 有参构造 ");
}
}
3.2、非静态工厂方法注入
package com.practice;
public interface Animal {
void speak();
}
@Setter
@Getter
public class Cat implements Animal{
private Owner owner;
@Override
public void speak() {
owner.setPetType("Cat");
System.out.println("owner pet type: " + owner.getPetType());
System.out.println("Cat.speak");
}
}
@Setter
@Getter
public class Dog implements Animal{
private Owner owner;
@Override
public void speak() {
owner.setPetType("dog");
System.out.println("owner pet type: " + owner.getPetType());
System.out.println("Dog.speak");
}
}
@Getter
@Setter
public class Owner {
private String petType = null;
}
@Getter
@Setter
public class AnimalFactory{
private Owner owner;
public Animal create(String petType) {
if("dog".equalsIgnoreCase(petType)){
Dog dog = new Dog();
dog.setOwner(owner);
return dog;
} else if("cat".equalsIgnoreCase(petType)){
Cat cat = new Cat();
cat.setOwner(owner);
return cat;
}
return null;
}
}
声明:本文内容是作者个人基于实践的理解,如有错误请指正;本文部分内容或图片参考互联网,如有侵权请联系删除,谢谢!