Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在普通Java中使用工厂方法定义bean -没有Spring

在普通Java中使用工厂方法定义bean -没有Spring
EN

Stack Overflow用户
提问于 2015-05-20 01:19:08
回答 1查看 1.5K关注 0票数 2

我想要创建一个bean,它可以由普通Java自动注入(自动注入),而不是使用Spring。

我的代码是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;

@ApplicationScoped
public class MyConnector {
    ....
    private Client client = ClientBuilder.newClient();
    ....
}

我想使用这样的依赖注入来代替:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Inject
    private Client client;

在好的旧Spring中,我只需要按照http://docs.spring.io/spring/docs/3.1.0.M1/spring-framework-reference/html/beans.html#beans-factory-class-static-factory-method准则定义bean

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<bean id="client"
    class="javax.ws.rs.client.ClientBuilder"
    factory-method="createInstance"/>

@Autowired会注射合适的豆子。

问题:我能在没有Spring的普通Java 中实现同样的目标吗?我可以用类似的方式定义bean吗?如果是,在哪里(在哪个配置文件中)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-20 01:55:34

为此,您可以编写自己的CDI制作人。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Dependent public ClientFactory{
   @Produces Client createClient() {
       return ClientBuilder.newClient(); 
   }
}

现在您可以使用CDI的@Inject在您的Bean中获取一个实例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@ApplicationScoped public class MyConnector {    
    @Inject private Client client;
}

有了这类生产者,CDI提供了工厂模式的一个易于使用的实现。您几乎可以在任何地方注入所有东西,不仅是类,还有接口、其他JEE资源,甚至原语类型。注入点不必是类成员,但也可能是方法中的参数.

每次注入都会给您一个不同的代理,因此如果有必要,您甚至可以向Bean注入多个客户端。如果这些代理对象引用相同的实例,则取决于工厂方法的实现,但通常不希望这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30345414

复制
相关文章
在多线程中使用spring的bean
在多线程中使用spring的bean可以方便地使用spring管理的配置文件,以便于更好地使用spring框架。通过封装spring提供工具,可以手动获得spring管理的bean,以便于多线程环境中的使用。同时,xml中配置很关键,需要使用spring加载时感知,否则无法获取到spring管理的bean。
杉枫
2017/12/26
7830
手把手教你应用三种工厂模式在SpringIOC中创建对象实例【案例详解】
工厂模式相信很多小伙伴们都有听说过,但是工厂模式在Java中的具体使用你有了解过吗?今天在这里和大家讲一下在Spring中如何使用三种工厂模式(静态工厂、实例工厂、自定义工厂)来创建bean对象并使用。
灰小猿
2021/09/23
1.7K0
Spring - 静态工厂方法、实例工厂方法创建Bean(6)
调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中,当客户端需要对象时,只需要简单地调用静态方法,而不同关心创建对象的细节
桑鱼
2020/03/17
1.1K0
Spring——单例Bean中使用多例Bean
通常bean都是单例的,如果一个bean需要依赖另一个bean时,被依赖的bean始终为单例的 让自定义bean获得applicationContext的能力 org.springframework.context.ApplicationContextAware public interface ApplicationContextAware extends Aware { void setApplicationContext(ApplicationContext applicationContex
shimeath
2020/07/30
9520
spring之通过静态工厂方法配置Bean
Car.java package com.gong.spring.beans.factory; public class Car { private String name; private double price; public String getName() { return name; } public void setName(String name) { this.name = name; } publi
西西嘛呦
2020/08/26
4360
spring之通过静态工厂方法配置Bean
「Spring认证」Spring Bean 定义教学
构成应用程序主干并由 Spring IoC 容器管理的对象称为beans。bean 是由 Spring IoC 容器实例化、组装和管理的对象。这些 bean 是使用您提供给容器的配置元数据创建的。例如,您在前面的章节中已经看到的 XML <bean/> 定义的形式。
IT胶囊
2021/08/19
3090
「Spring认证」Spring Bean 定义继承
一个 bean 定义可以包含很多配置信息,包括构造函数参数、属性值和容器特定的信息,例如初始化方法、静态工厂方法名称等。
IT胶囊
2021/08/25
6120
spring之通过实例工厂方法配置Bean
Car.java package com.gong.spring.beans.factory; public class Car { private String name; private double price; public String getName() { return name; } public void setName(String name) { this.name = name; } publi
西西嘛呦
2020/08/26
2750
spring之通过实例工厂方法配置Bean
Spring5参考指南:Bean的创建
Bean在Spring中就是一个业务组件,我们通过创建各种Bean来完成最终的业务逻辑功能。
子润先生
2021/06/21
2430
在golang中使用工厂模式
工厂模式是一种创建型设计模式,它提供了一种方式,可以将具体的对象创建逻辑从客户端代码中分离出来。这样,客户端代码就可以通过一个公共接口使用各种不同的对象,而不需要知道这些对象的具体类或创建逻辑。
运维开发王义杰
2023/08/16
1900
在golang中使用工厂模式
Spring5参考指南:Bean的创建
Bean在Spring中就是一个业务组件,我们通过创建各种Bean来完成最终的业务逻辑功能。
程序那些事
2020/07/07
5450
Java 必看的 Spring 知识汇总!
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益。 Spring优点: 低侵入式设计,代码的污染极低; 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺; Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦 S
Java技术栈
2018/06/04
6970
Java 必看的 Spring 知识汇总!有比这更全的算我输!
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益。 Spring优点: 低侵入式设计,代码的污染极低; 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺; Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦
三哥
2018/06/15
6310
在 Jelly Bean 中使用应用加密
最新的 Android 4.1(Jelly Bean)版本在上周的 Google I / O 大会上发布了,它有一大堆新功能和改进。 其中一个有趣的功能是应用程序加密,除了简短的说明还没有任何细节:“从 Jelly Bean 版本起,Google Play 中的付费应用程序在分发和存储之前,会使用设备特定的密钥加密”。缺乏细节当然会引起猜测,有些人甚至担心,当他们使用一个新的设备时必须回购他们的付费应用程序。 在本文中,我们将介绍如何在操作系统中实施应用加密,展示如何在不通过 Google Play 的情况下安装加密的应用,并了解 Google Play 如何提供加密的应用。
他叫自己MR.张
2019/07/01
1K0
在 Jelly Bean 中使用应用加密
spring中bean的知识点1.0
五种作用域中,request、session和global session三种作用域仅在基于web的应用中使用
热心的社会主义接班人
2018/09/30
3950
spring中bean的知识点1.0
22.手绘Spring DI运行时序图
当Spring loC容器完成了 Bean定义资源的定位、载入和解析注册以后,loC容器中已经管理类Bean 定义的相关数据,但是此时loC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况 发生:
编程之心
2020/08/12
7020
Spring 注册 Bean 在配置中的定义和使用 Autowired
因为项目的需要,我们使用了一个第三方的电子邮件库,但是我们希望把这个库在项目中注册成 Bean 然后随时在其他地方使用。
HoneyMoose
2022/09/19
1.7K0
Spring 注册 Bean 在配置中的定义和使用 Autowired
Spring系列三:IoC 与 DI
在软件工程中,控制反转(IoC)是一种设计思想,对象之间耦合在一起,在运行时自动绑定,并且它们编译时对所需要引用的对象是不确定的。在这个spring教程中,通过示例了解ioc和spring中的依赖注入之间的区别。
java干货
2021/02/19
6380
Spring系列三:IoC 与 DI
Spring框架参考手册_5.0.0_中文版_Part II_3.3
文章作者:Tyan 博客:[noahsnail.com](http://noahsnail.com
Tyan
2022/05/09
3560
Java8 - 使用工厂方法 supplyAsync创建 CompletableFuture
目前为止我们已经了解了如何通过编程创建 CompletableFuture 对象以及如何获取返回值,虽然看起来这些操作已经比较方便,但还有进一步提升的空间, CompletableFuture 类自身提供了大量精巧的工厂方法,使用这些方法能更容易地完成整个流程,还不用担心实现的细节。
小小工匠
2021/08/17
8100

相似问题

如何在Java配置中使用工厂方法初始化Spring bean?

21

在Spring配置中使用工厂方法

15

Spring -在配置中使用工厂bean?

31

对使用工厂方法创建的bean使用spring @Transactional吗?

210

用工厂方法从XML到Java的Spring

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文