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成员属性注入的方式对应于Java的setter方法,包括基本数据类型的value注入以及引用参数类型的ref注入,示例如下:

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配置文件:

当然,也支持value标签注入。

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;

}

}

声明:本文内容是作者个人基于实践的理解,如有错误请指正;本文部分内容或图片参考互联网,如有侵权请联系删除,谢谢!

友情链接