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

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实例,不同之处只是一个方法无参,一个方法有参。

相关文章:

  • 源码级拆解:如何搭建高并发「数字药店+医保购药」一体化平台?
  • hmdp知识点
  • 深入剖析 RocketMQ 中的 DefaultMQPushConsumerImpl:消息推送消费的核心实现
  • SAP 在 AI 与数据统一平台上的战略转向
  • 测试(面经 八股)
  • 2025年—Comfyui聚合插件:Comfyui-LayerStyle 超多实用功能 | 附各功能模型
  • LeetCode 118 杨辉三角 (Java)
  • 【面试篇 9】c++生成可执行文件的四个步骤、悬挂指针、define和const区别、c++定义和声明、将引用作为返回值的好处、类的四个缺省函数
  • 如何使用Jmeter进行压力测试?
  • WPF 播放器(AudioPlayer 2025)
  • Java中栈的多种实现类详解
  • 23、字节对齐
  • Xxl-job——源码设计思考
  • 数据通信基础
  • Axure应用交互设计:注册登录页完整交互设计
  • 【Linux操作系统】基础开发工具(yum、vim、gcc/g++)
  • sendDefaultImpl call timeout(rocketmq)
  • 【Python】屏幕像素颜色值的获取
  • SpringBoot-17-MyBatis动态SQL标签之常用标签
  • Unity的日志管理类
  • 青岛网站推广引流/网络推广运营是做什么
  • 看手表网站/品牌营销战略
  • 九江网站制作/免费的行情网站app软件
  • 郫县网站建设/百度快照优化的优势是什么
  • 动态网站做登录界面/南京seo推广
  • 班组安全建设 网站/优化最狠的手机优化软件