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

相关推荐
阿丰资源1 分钟前
java项目-基于SpringBoot+MySQL+Vue的前后端分离宠物商店系统(附资料)
java·spring boot·mysql
ZStack开发者社区2 分钟前
ZSTACK · 答客问 | 高频问题合集
前端·网络·php
G探险者8 分钟前
LiteFlow 技术介绍
java·开发语言
程序媛徐师姐12 分钟前
Java基于SSM的实验室管理微信小程序,附源码+文档说明
java·微信小程序·实验室管理·实验室管理微信小程序·java实验室管理微信小程序·java实验室管理小程序·实验室管理小程序
林恒smileZAZ5 小时前
Vue<前端页面版本检测>
前端·javascript·vue.js
ulias2127 小时前
Linux系统中的权限问题
linux·运维·服务器
码事漫谈8 小时前
当AI开始“思考”:我们是否真的准备好了?
前端·后端
青花瓷8 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
许杰小刀9 小时前
ctfshow-web文件包含(web78-web86)
android·前端·android studio
014-code9 小时前
订单超时取消与库存回滚的完整实现(延迟任务 + 状态机)
java·开发语言