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实例(默认输出对象的类名和哈希码)。

相关推荐
西峰u6 分钟前
Java多线程从入门到线程安全
java·开发语言·jvm
Dovis(誓平步青云)16 分钟前
QQ 机器人怎么接上 AI?用 AstrBot + NapCat 搭一套可扩展的 DeepSeek 助手
服务器·人工智能·机器人·操作系统·电脑·智能化
gis开发之家25 分钟前
Spring Boot 4 定时任务与异步线程池:从 @Scheduled 到高并发任务编排(生产级实战)
java·spring boot·后端·wpf·spring boot4
郑州光合科技余经理1 小时前
本地生活系统:多业务订单字段怎么分账本导出
java·开发语言·前端·数据库·uni-app·php·ai编程
JJJennie7772 小时前
MAI Gateway技术揭秘:大模型网关能做什么?从原理到落地
linux·服务器·网络·ai网关
YangYang9YangYan3 小时前
2026 校招审计风控岗位 JD 拆解,工具、专业能力与面试考点
java·大数据·人工智能·数据分析
wuminyu8 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
怕浪猫8 小时前
FDE 如何正确解决现场项目工程性的问题
前端·后端·ai编程
西瓜太郎12348 小时前
外层模型卡片与分组详情成功率不一致,应该怎么排查?
前端·typescript·go·软件工程·react
前端世界9 小时前
Linux服务器实战:NTP时间同步、SELinux权限与rsyslog日志管理,一次搞懂三大运维问题
linux·运维·服务器