1. 首页
  2. 软件开发
  3. Spring——IOC基于XML管理Bean环境搭建、获取Bean,以及依赖注入的多种形式(setter注入、构造器注入、特殊值处理)

Spring——IOC基于XML管理Bean环境搭建、获取Bean,以及依赖注入的多种形式(setter注入、构造器注入、特殊值处理)

  • 发布于 2024-08-17
  • 0 次阅读

IOC(控制反转)是Spring框架的核心概念之一,通过XML配置文件管理Bean、获取Bean以及实现依赖注入的多种方式,包括setter注入、构造器注入和特殊值处理。

1. IOC基于XML管理Bean环境搭建

在Spring中,可以通过XML配置文件定义和管理Bean。首先,创建一个XML配置文件applicationContext.xml来定义Bean:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="userService" class="com.example.UserService">
        <property name="userDao" ref="userDao"/>
    </bean>

    <bean id="userDao" class="com.example.UserDaoImpl"/>
</beans>

在这个XML配置文件中,定义了一个名为 userService 的Bean,它依赖于名为 userDao 的另一个Bean。

2. 获取Bean

在应用程序中获取Bean的方式有多种,其中最常见的是通过ApplicationContext获取

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
   
    public static void main(String[] args) {
   
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        
        UserService userService = (UserService) context.getBean("userService");
        userService.processUser();
    }
}

3. 依赖注入的多种形式

  • Setter注入:
    在Bean类中提供setter方法,Spring会通过调用setter方法来注入依赖。
public class UserService {
   
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
   
        this.userDao = userDao;
    }


}
  • 构造器注入:
    通过构造函数将依赖注入到Bean中。
public class UserService {
   
    private UserDao userDao;

    public UserService(UserDao userDao) {
   
        this.userDao = userDao;
    }

 
}
  • 特殊值处理:
    可以通过 <property> 标签设置特殊值,如字面值、null值等。
<bean id="userService" class="com.example.UserService">
    <property name="specialValue" value="100"/>
    <property name="nullValue" ref="nullBean"/>
</bean>

原文链接: https://blog.csdn.net/2401_82884096/article/details/137815952