我正在使用别人编写的Spring Java代码。我想引用由注释(字段classABC)创建的bean:
@Component
public class ClassService
{
@Autowired
ClassABC classABC;
public interface ClassABC
@Repository
public class ClassABCImpl extends BaseABC implements ClassABC
以下代码尝试按名称获取对ClassABC bean的引用,但不起作用:
ClassABC classABC = ApplicationContext.getBean("classABC");
但是,以下按类型引用此bean的代码可以正常工作:
ClassABC classABC = ApplicationContext.getBean(ClassABC.class);
因为第一个引用不起作用,所以我猜该bean没有命名为“classABC”。这个bean叫什么名字?
注意:没有配置XML引用此bean,因此我认为bean名称没有在xml中定义。
最佳答案
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/AnnotationBeanNameGenerator.html
是注释的默认bean名称生成器,由DefaultBeanNameGenerator
定义的bean有一个@Bean
在这种情况下,我相信bean的名称将是classABCImpl
,因为它是由类的短名称构建的。
以具体的服务实现为例,com.xyz.FooServiceImpl -> fooServiceImpl
就个人而言,如果您想通过名称引用该bean,我不喜欢使用默认命名。在这些情况下最好明确。
关于java - 使用注解创建时,默认情况下如何命名Bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48871789/