当前位置: 首页 > java >正文

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。

实例工厂方法步骤如下:

定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂(xml)

定义实例工厂类

该类有实例方法返回所需bean,实例方法可以有参或无参。

package com.itheima.factory;import com.itheima.dao.interfaces.InterfaceUserDao;
import com.itheima.service.interfaces.InterfaceUserService;
import com.itheima.service.impl.UserServiceImpl02;/*** @copyright 2003-2024* @author    qiao wei* @date      2024-12-24* @version   1.0* @brief     实例工厂方法返回Bean。* @history   name*            date*            brief*/
public class MyBeanFactory02 {public InterfaceUserService getUserService() {return new UserServiceImpl02(userDao, 20);}public void setUserServiceA01(InterfaceUserDao userDao) {this.userDao = userDao;}public InterfaceUserDao getUserDaoABC(int value01, InterfaceUserDao userDao01) {
//        System.out.println("Int:" + value01);return userDao01;}private InterfaceUserDao userDao;
}

方法getUserService和方法getUserDaoABC分别返回bean对象。

定义实例工厂(xml),定义调用实例工厂(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"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.0.xsd"><!--    <bean id="userDaoInstance"-->
<!--          class="com.itheima.dao.impl.UserDaoImpl">-->
<!--    </bean>--><import resource="../dao/userDaoImpl.xml"/><!--实例工厂的实例方法(无参方法)返回第三方bean。1:定义Bean“myBeanFactoryA002”。工厂方法通过其它设置进行设置,随后将设置好的数据传递给工厂方法。2:定义实例工厂。该工厂绑定实例工厂类“myBeanFactoryA002”,调用无参实例方法“getUserService”返回Bean。--><bean id="myBeanFactoryA002"class="com.itheima.factory.MyBeanFactory02"></bean><bean id="getBeanWithoutParam"factory-bean="myBeanFactoryA002"factory-method="getUserService"></bean><!--实例工厂的实例方法(有参方法)返回第三方bean。1:factory-bean指定实例工厂类。2:factory-method指定工厂类的实例有参方法“getUserDaoABC”,该方法返回Bean。注:方法参数要按照方法中定义顺序赋值,改变顺序报错。--><bean id="getBeanWithParam"factory-bean="myBeanFactoryA002"factory-method="getUserDaoABC"><!-- 基本类型int参数 --><constructor-arg name="value01"value="100"></constructor-arg><!-- 引用类型"com.itheima.dao.impl.UserDaoImpl" --><constructor-arg name="userDao01"ref="userDaoImpl001"></constructor-arg></bean>
</beans>

可以看到,getBeanWithParam和getBeanWithoutParam都是通过调用实例工myBeanFactoryA002取得bean实例,不同之处只是一个方法无参,一个方法有参。

http://www.xdnf.cn/news/12587.html

相关文章:

  • 408考研逐题详解:2009年第33题
  • 第22讲、Odoo18 QWeb 模板引擎详解
  • 【PCIe总线】 -- PCI、PCIe相关实现
  • 第十五届蓝桥杯单片机国赛
  • SQL-labs通关(level1-22)
  • 主流信创数据库对向量功能的支持对比
  • Vue Fragment vs React Fragment
  • Mysql-定时删除数据库中的验证码
  • Golang基础学习
  • 性能测试-jmeter实战2
  • 注意力热图可视化
  • Ubuntu 下开机自动执行命令的方法
  • win11无法打开.bat文件、打开.bat文件闪退解决方案,星露谷smapi mod安装时,.bat安装文件一闪而
  • CMake基础:构建流程详解
  • 变幻莫测:CoreData 中 Transformable 类型面面俱到(一)
  • 通过日志分析华为CangjieMagic智能体框架的工作机理
  • CAD2025安装教程与资源下载
  • AI 开发之 Python 编程技能
  • Redis 实现分布式锁:深入剖析与最佳实践(含Java实现)
  • Mybatis 拦截器 与 PageHelper 源码解析
  • ⚡️ Linux Docker 基本命令参数详解
  • Kafka 消息模式实战:从简单队列到流处理(二)
  • 深入浅出Docker
  • 【Go语言基础【14】】defer与异常处理(panic、recover)
  • C++学习-入门到精通【16】自定义模板的介绍
  • 轻量高效的B站视频下载解析
  • 对比学习
  • 零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)
  • 文档极速转换器 - 免费批量Word转PDF工具
  • 快速上手 Metabase:从安装到高级功能实战