gpt4 book ai didi

java - 将 @Component 注解的类更改为 @Bean 注解的方法

转载 作者:行者123 更新时间:2023-11-30 07:06:42 24 4
gpt4 key购买 nike

我有一个注释为@Component的类,然后将@Autowired添加到另一个类中。但是,我需要删除此 @Component 注释,而是在之前 Autowiring 的类中使用 @Bean 注释方法创建它。

以前的类看起来像:

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

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

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

所以现在我已经删除了@Component注释并编写了一个@Bean注释方法,如下所示:

public class MyClass implements IMyClass
{
// Stuff
}

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

....
}

我的问题是替换之前的 myClass.doStuff() 调用以使用新的 bean。我现在是否将 MyClass 类型的参数传递给私有(private)方法:

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

...或者我直接调用这个方法(对我来说这似乎不是正确的方法):

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

...或者这些都不正确?

最佳答案

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

关于java - 将 @Component 注解的类更改为 @Bean 注解的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39976569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com