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

相关推荐
BlockChain8885 分钟前
SpringBoot实战一:10分钟搭建企业级用户管理系统(20000字完整项目)
java·spring boot·后端
消失的旧时光-19438 分钟前
第六课 · 6.1 从 JDBC 到 MyBatis:SQL 工程化是如何发生的?
java·sql·mybatis
Jaxson Lin16 分钟前
Java编程进阶:线程基础与实现方式全解析
java·开发语言
夜喵YM17 分钟前
基于 Spire.XLS.Free for Java 实现无水印 Excel 转 PDF
java·pdf·excel
苦藤新鸡20 分钟前
27.合并有序链表,串葫芦
前端·javascript·链表
茶本无香20 分钟前
设计模式之五—门面模式:简化复杂系统的统一接口
java·设计模式
_OP_CHEN22 分钟前
【前端开发之HTML】(四)HTML 标签进阶:表格、表单、布局全掌握,从新手到实战高手!
前端·javascript·css·html·html5·网页开发·html标签
她说可以呀22 分钟前
网络基础初识
java·网络·java-ee
没有bug.的程序员24 分钟前
Java锁优化:从synchronized到CAS的演进与实战选择
java·开发语言·多线程·并发·cas·synchronized·
卓应米老师28 分钟前
【网络配置实战】堆叠的配置
运维·服务器·网络·华为认证