当前位置: 首页 > 知识库问答 >
问题:

将类注释的@Component更改为@Bean注释的method

马欣德
2023-03-14

我有一个被注释为@component的类,然后将其@autowired添加到另一个类中。但是,我需要删除这个@component注释,而是在以前自动连线它的类中用一个@bean注释方法创建它。

以前的类看起来像:

@Component
public class MyClass implements IMyClass
{
    // Stuff
}

@Configuration
public class MyUsingClass
{
    @Autowired
    private IMyClass myClass;

    private void methodUsingMyClass()
    {
        myClass.doStuff();
    }
}
public class MyClass implements IMyClass
{
    // Stuff
}

@Configuration
public class MyUsingClass
{
    @Bean
    public IMyClass getMyClass()
    {
        return new MyClass();
    }

    ....
}
private void methodUsingMyClass(final MyClass myClass)
{
    myClass.doStuff();
}

...或者我直接调用这个方法(在我看来不是正确的方法):

private void methodUsingMyClass()
{
    getMyClass().doStuff();
}

…或者这两个都不正确?

共有1个答案

齐运诚
2023-03-14

我想您误解了@bean注释。它可以用来创建一个bean。所以spring基本上会扫描所有类,找到@Bean并创建一个Bean,而不是更多。您现在可以使用这个bean,就像使用用 创建的bean一样。要实际使用bean,您需要从applicationcontext@autowire获取它。当然,您仍然可以像使用代码中的任何其他函数一样使用该函数来创建该对象的新实例,但这将与您希望使用bean实现的目标相矛盾

 类似资料:
  • 我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?

  • 通常,当我在Kotlin代码中使用Java库中的注释时,我必须指定target以指定编译代码中必须注释的元素: 而不是指定,我希望能够简单地使用,特别是如果它发生在许多地方。 问题:有没有一种方法可以提示Kotlin编译器在所有位置使用不同的目标,这样如果我使用,它就会像处理一样处理它?或者有没有其他方法可以省略指定目标?如何实现这一目标?是否可以在编译阶段通过注释处理完成(像Lombok那样)?

  • 我一直在使用这篇文章中的代码行来注释条形图中列顶部的总值,但我似乎无法弄清楚如何在没有小数位数的情况下获得整数结果? 有什么想法吗?

  • 如何使用注释在Spring中提供bean继承?在XML配置中,我使用了

  • 本文向大家介绍Java注释的类型。,包括了Java注释的类型。的使用技巧和注意事项,需要的朋友参考一下 Java支持单行,多行注释和文档注释。Javadoc工具可以理解文档注释,并可用于创建基于HTML的文档。 / **被称为文档注释。Javadoc工具在为程序代码创建文档时使用它。 / *用于多行注释。 //用于单行注释 示例

  • 我有一把刀: 问题是,当我试图使用DAO进行加载调用时,使用DynamoDBMapper以field d1作为哈希键来获取项目,它会抛出一个DynamoDBExc0019,说:为公共DAO. getField2()找到了空键,但实际上表的值对应于field d2。问题,这是因为Lombok注释而不是手动突变代码,还是一般来说我们一起使用Lombok和DynamoDBAnnotions?