是否有必要在 @Configuration class 中自动装配一个 @Bean 以便在 class 中使用?
Is it necessary in a @Configuration class to autowire an @Bean for use in that class?
在带有 @Configuration
注释的 class 中,有一个带有 @Bean
注释的方法,是否需要有一个同名的 @Autowired
字段作为 bean 以便在同一个 class 中使用它?既然配置 class 创建了 bean,它不应该通过直接调用方法立即访问它吗?
例如:
@Configuration
public class ConfigClass
{
@Autowired
private BeanForSomething beanForSomething;
@Bean
public BeanForSomething beanForSomething()
{
return new BeanForSomething();
}
private void methodThatUsesBean()
{
beanForSomething.doSomething();
}
}
是否可以省略 @Autowired
字段并仅调用 beanForSomething().doSomething();
来使用该 bean?也许我误解了 @Bean
注释的用法。
不,@Bean
声明已经解决了这个问题。您只需要在 methodThatUsesBean()
中调用 beanForSomething()
正如之前的回答者所说,你可以使用
private void methodThatUsesBean()
{
beanForSomething().doSomething();
}
但是在创建另一个 bean 的情况下,您可以使用方法参数
@Bean
public BeanForSomething beanForSomething()
{
return new BeanForSomething();
}
@Bean
public SecondBean secondBean(BeanForSomething beanForSomething)
{
return new SecondBean(beanForSomething);
}
在带有 @Configuration
注释的 class 中,有一个带有 @Bean
注释的方法,是否需要有一个同名的 @Autowired
字段作为 bean 以便在同一个 class 中使用它?既然配置 class 创建了 bean,它不应该通过直接调用方法立即访问它吗?
例如:
@Configuration
public class ConfigClass
{
@Autowired
private BeanForSomething beanForSomething;
@Bean
public BeanForSomething beanForSomething()
{
return new BeanForSomething();
}
private void methodThatUsesBean()
{
beanForSomething.doSomething();
}
}
是否可以省略 @Autowired
字段并仅调用 beanForSomething().doSomething();
来使用该 bean?也许我误解了 @Bean
注释的用法。
不,@Bean
声明已经解决了这个问题。您只需要在 methodThatUsesBean()
beanForSomething()
正如之前的回答者所说,你可以使用
private void methodThatUsesBean()
{
beanForSomething().doSomething();
}
但是在创建另一个 bean 的情况下,您可以使用方法参数
@Bean
public BeanForSomething beanForSomething()
{
return new BeanForSomething();
}
@Bean
public SecondBean secondBean(BeanForSomething beanForSomething)
{
return new SecondBean(beanForSomething);
}