首页 > 其他分享 >通过Supplier创建对象示例

通过Supplier创建对象示例

时间:2024-04-14 14:44:25浏览次数:22  
标签:name 示例 Car 创建对象 springframework org Supplier import public

通过Supplier接口创建对象,具体code 如下:

package com.gientech.supplier;

public class Car {

    private String name;

    public Car() {
    }

    public Car(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                '}';
    }
}

package com.gientech.supplier;

public class CreateSupplier {
    public static Car createCar(){
        return new Car("AITO");
    }
}
package com.gientech.supplier;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.GenericBeanDefinition;

public class SupplierBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        BeanDefinition car = beanFactory.getBeanDefinition("car");
        GenericBeanDefinition genericBeanDefinition = (GenericBeanDefinition) car;
        genericBeanDefinition.setInstanceSupplier(CreateSupplier::createCar);
        genericBeanDefinition.setBeanClass(Car.class);
    }
}

创建配置文件

<?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="car" class="com.gientech.supplier.Car"></bean>
    <bean id="supplierBeanFactoryPostProcessor" class="com.gientech.supplier.SupplierBeanFactoryPostProcessor"></bean>

</beans>
<?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="car" class="com.gientech.supplier.Car"></bean>
    <bean id="supplierBeanFactoryPostProcessor" class="com.gientech.supplier.SupplierBeanFactoryPostProcessor"></bean>

</beans>

创建启动类

package com.gientech.supplier;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SupplierTest {
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("supplier.xml");
        Car bean = ac.getBean(Car.class);
        System.out.println(bean.getName());
    }
}

运行结果如图:
supplier接口

supplier 接口是函数接口,
执行流程如下图所示:
supplier执行流程

标签:name,示例,Car,创建对象,springframework,org,Supplier,import,public
From: https://www.cnblogs.com/zgcy123456/p/18077777

相关文章

  • 如何编写易于访问的技术文档 - 最佳实践与示例
    当你为项目或工具编写技术文档时,你会希望它易于访问。这意味着它将为全球网络上的多样化受众提供服务并可用。网络无障碍旨在使任何人都能访问网络内容。设计师、开发人员和撰写人员有共同的无障碍最佳实践。本文将涵盖一些创建技术内容的最佳实践。(本文视频讲解:java567.com)什......
  • 学习 GitHub 风格的 Markdown 语法和格式化 - 带有示例
    Markdown是一种轻量级、开源、易读易写的文本格式化方法,你可以在任何IDE或编辑器中将其作为纯文本使用。在GitHub上写作时,你可以使用Markdown语法和HTML元素来扩展Markdown的功能。你可以在GitHub的各个地方使用Markdown语法,比如README文件、wiki、评论、拉取请......
  • 通过IKE协商方式建立IPSec隧道示例
    通过IKE协商方式建立IPSec隧道示例一、组网需求如图所示,HX为企业分支网关,GY为企业总部网关,分支与总部通过公网建立通信。分支子网为10.1.2.0/24,总部子网为10.1.1.0/24。GY和HX两个站点用户均可以正常访问互联网2.2.2.2。企业希望对分支子网与总部子网之间相互访问的流量进行安......
  • 采用手工方式建立IPSec隧道示例
    配置采用手工方式建立IPSec隧道示例一、组网需求如图所示,HX为企业分支网关,GY为企业总部网关,分支与总部通过公网建立通信。分支子网为10.1.2.0/24,总部子网为10.1.1.0/24。GY和HX两个站点用户均可以正常访问互联网2.2.2.2。企业希望对分支子网与总部子网之间相互访问的流量进行安......
  • 【Azure Power BI】在Power BI中获取十进制随机数后,转换十六进制作为颜色值示例
    问题描述在使用PowerBIDesktop做报表,用到了其中一个图标组件(CardBrowser),可以做出比较漂亮的图片和带颜色的卡片效果:但是,在自己的数据源中,并没有颜色值。所以颜色值为0-255的十进制转换为00-FF的十六进制数据,想到了生成随机数,然后转换为颜色值。数据源格式示例:Title Coun......
  • Redis Stack功能介绍及redis-om-dotnet使用示例
    为了简化开发人员对较新的 Redis模块及其提供的功能的体验,同时简化支持其功能的文档和客户端。以帮助开发人员从开始使用 Redis的那一刻起,就能充分提高工作效率。RedisStack诞生了。RedisStack将较新的Redis模块整合到一个产品中。这使得我们可以轻松地开始使用我们基于......
  • Python中的错误处理 - 使用try、except、else和finally进行解释,并附带代码示例
    最近,我的经理委派我创建一个自动报告。我设计的报告非常简单。它包括一些来自数据库的数字和一些基本的数学运算。我很兴奋最终可以向公司展示我的惊人的Python技能。我完成并交付了产品。一切都很顺利。至少,直到大约两周后。我的报告由于除以零错误而随机失败了。来了个笑声轨道......
  • JAVA System.getProperty() 与 System.getenv() 差异及示例
    System.getenv() 方法是获取指定的环境变量的值。System.getenv() 接收参数为任意字符串,当存在指定环境变量时即返回环境变量的值,否则返回null。System.getProperty() 是获取系统的相关属性,包括文件编码、操作系统名称、区域、用户名等,此属性一般由jvm自动获取,不能设置。Sys......
  • 接口示例
      今天发现一个问题;安装依赖,使用淘宝源速度巨慢,所以现有依旧改成默认国际源,为什么今天会安装axios,因为今天安装sass时用了一个命令清除npm缓存:运行命令 npmcacheclean--force,所以今天运行的时候axios没了,又安装一边  跨域问题: ......
  • 毕设作品案例-基于JAVA-SSM实现-微信小程序-校园电商商城系统-附源码+LW(文档+PPT)+示例
    目录概要小程序开发说明研究背景系统功能分析系统功能的具体实现(项目展示)小程序端-前台功能模块后台管理员功能模块管理员功能模块源码获取概要本文论述了微信小程序的校园商铺系统的设计和实现,该系统从实际运用的角度出发,运用了计算机系统设计、数据库等相关知识......