java - 使用注解创建时,默认情况下如何命名Bean?

标签 java spring annotations javabeans

我正在使用别人编写的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/

相关文章:

java - 在单个 Activity 中设置两个 fragment

java - 日志 spring Bean 实例化

ios - 聚类注解覆盖非聚类注解

grails - Grails @Transactional 与 Spring @Transactional 注释之间的差异

java - 类文件中的注释存储在哪里

java - 使用多个 war 来解决多个 Scala 版本

java - 需要在eclipse中调试一个swing应用程序

java - 深入了解分离器特性

java - 处理程序类 public java.lang.String com.emusicstore.controller.admin.AdminHome.adminPage() 上的映射无效

Java日历,将任务设置为重复