当前位置: 首页 > 面试题库 >

如何管理由FactoryBean spring创建的bean?

游安康
2023-03-14
问题内容

该FactoryBean的可用于以编程方式创建,这可能需要复杂的实例化逻辑的对象。

但是,似乎由所 创建 的bean
FactoryBean并没有成为春季管理的。这种解释正确吗?如果是这样,是否有任何不错的解决方法?包含一个简短的代码示例来说明我的问题。

ApplicationContext:

<bean id="searcher" class="some.package.SearcherFactory" /> 
<bean id="service" class="some.package.Service" />

工厂实施:

public class SearcherFactory implements FactoryBean<Searcher> {

    @Override
    public Searcher getObject() throws Exception {
        return new Searcher(); // not so complex after all ;)
    }

    @Override
    public Class<Searcher> getObjectType() {
        return Searcher.class;
    }
    .... 
}

工厂创建的类:

public class Searcher() {
      private Service service;

      @Autowired
      public void setService(Service service) {
           // never invoked
           this.service=service;
      } 
}

问题答案:

由创建的对象FactoryBean
由Spring管理,而不是由Spring实例化或配置。通过使用FactoryBean,您自己对此承担责任。所有注入和配置必须由FactoryBean

还有一种可能对您更好的选择-
使用基于注释的配置而不是基于XML的配置。这意味着您可以在Java中使用复杂的实例化逻辑,同时仍在@Autowired对象本身上使用类似的东西。

我现在倾向于对所有非平凡的Spring应用程序使用批注样式的配置,这使很多事情变得容易得多。



 类似资料:
  • 本文介绍创建和管理数据表的基本 SQL 操作和规范。 创建和管理表 SQL 语句参阅: CREATE TABLE DROP TABLE FLASHBACK TABLE RENAME TABLE ALTER TABLE RECOVER TABLE 表命名规范 同一业务或者模块的表尽可能使用相同的前缀,表名称尽可能表达含义; 多个单词以下划线分隔,不推荐超过32个字符。 建议对表的用途进行注释说明,以

  • 本文介绍创建和管理数据库的基本 SQL 操作和规范。 创建和管理库 SQL 语句参阅: CREATE DATABASE DROP DATABASE ALTER DATABASE 库命名规范 建议按照业务、产品线或者其它指标进行区分,一般不要超过 20 个字符。如:临时库(tmp_crm)、测试库(test_crm)。

  • 卷是一种块存储设备。我们把卷挂载在实例实例上,从而达到持久化存储的目的。您可以随时将某个卷安装在一个运行中的实例上,或者从实例上卸载卷,再把它安装再另一个实例上。您还可以给卷拍快照,以及删除卷等等。但只有管理员才能指定卷的类别。 创建卷 登录控制台。 在PROJECT选框中选择希望操作的Project。 在PROJECT选项卡种,打开Compute选项卡,然后点击Volumes子项。 点击Crea

  • 仅企业版可用 请求header PUT /v1/account/createActManager Authorization:Bearer {ACCESS TOKEN} 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 请求payload { "username" : "管理员A", "cost_type" : "1", "cost_limi

  • 我在 Jenkins 中创建了一个管道作业,我需要创建一个管道脚本来显示开发阶段的失败和不稳定的构建。在 Jenkins 2.0 中创建此脚本的步骤是什么,或者是否有任何示例管道脚本

  • 本文介绍创建和管理索引的基本 SQL 操作和规范。 创建和管理索引 SQL 语句参阅: CREATE INDEX ADD INDEX DROP INDEX RENAME INDEX SHOW INDEXES [FROM|IN] 索引命名规范 唯一索引:uk_[表名称简写]_[字段名简写] 普通索引:idx_[表名称简写]_[字段名简写] 多单词组成的 column_name,取尽可能代表意义的缩写