SpringBeanFactory

SpringBeanFactory的开发步骤:

1.导入依赖

因为Bean Factory是Spring提供的,所以我们需要提供依赖

XML 复制代码
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.7</version>
        </dependency>
    </dependencies>

2.创建一个bean

创建UserService和它的实现类UserServiceImpl

3.编写配置文件

在resource目录下创建bean.xml

id是bean对象的名字

class是实现类的全类名

XML 复制代码
<?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.qcby.service.impl.UserServiceImpl"></bean>
</beans>

4.编写测试代码

创建测试类BeanTest:

java 复制代码
package com.qcby;

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;

public class BeanTest {
    public static void main(String[] args) {

        //创建工厂对象
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        //创建一个读取器
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
        //读取器绑定工厂
        reader.loadBeanDefinitions(new ClassPathResource("bean.xml"));
        //根据id获取bean示例对象
        Object userService=beanFactory.getBean("userService");
        System.out.println(userService);
    }
}

运行,打印了地址,说明工厂帮我们创建了实例对象

5.依赖注入

1.创建UserDao接口和实现类UserDaoImpl

2.在UserServiceImpl里面写set方法

java 复制代码
package com.qcby.service.impl;

import com.qcby.dao.UserDao;
import com.qcby.service.UserService;

public class UserServiceImpl implements UserService {
    public void setUserDao(UserDao userDao) {
        System.out.println("UserDao被创建:"+userDao);
    }
}

3.配置文件

配置UserDao的Bean和UserServiceImpl的属性:

XML 复制代码
<?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.qcby.service.impl.UserServiceImpl">
        <!--name是方法setXXX里面的XXX ref是去容器里面找什么bean-->
        <property name="userDao" ref="userDao"></property>
    </bean>

    <bean id="userDao" class="com.qcby.dao.Impl.UserDaoImpl"></bean>
</beans>

4.运行

核心组件

Spring IoC 容器相关类

DefaultListableBeanFactory:Spring 的核心 Bean 工厂,负责创建和管理 Bean 实例。

XmlBeanDefinitionReader:用于读取 XML 格式的 Bean 配置文件,并将配置信息加载到 Bean 工厂中。

ClassPathResource:指定 XML 配置文件的路径。

执行流程

创建DefaultListableBeanFactory实例(Bean 工厂)。

创建XmlBeanDefinitionReader并绑定到 Bean 工厂,用于读取 XML 配置。

通过读取器加载bean.xml配置,将userDao和userService的 Bean 定义注册到工厂中。

从工厂中获取 id 为userService的 Bean 实例。

打印userService实例(默认输出对象的类名和哈希码)。

相关推荐
hpoenixf31 分钟前
2026 年前端面试问什么
前端·面试
还是大剑师兰特38 分钟前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
疯狂吧小飞牛38 分钟前
GPG基础指令
linux·服务器·网络
C++ 老炮儿的技术栈1 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
泯泷1 小时前
阶段一:从 0 看懂 JSVMP 架构,先在脑子里搭出一台最小 JSVM
前端·javascript·架构
大阿明1 小时前
Spring Boot(快速上手)
java·spring boot·后端
bearpping1 小时前
Java进阶,时间与日期,包装类,正则表达式
java
邵奈一1 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
hjxu20162 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
mengchanmian2 小时前
前端node常用配置
前端