gpt4 book ai didi

java - spring bean的bean ID是什么实现了一个接口(interface)

转载 作者:行者123 更新时间:2023-11-30 08:54:18 24 4
gpt4 key购买 nike

当为 MyBean 类创建 bean 时,bean id 是 myBean 但是如果我从一个创建服务 bean,bean ID 是什么界面如下?

@Service
public class ProfileServiceImpl implements ProfileService

当我尝试以 @profileService thymeleaf 访问 bean 时出现以下错误。

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'profileService' is defined

一直以来,我都通过 Autowiring 将这个bean 用于 Controller 。但目前我需要从 thymeleaf 访问它。

我的 thymeleaf 代码段

 <div th:unless="${@profileService.isMe(user)}">

最佳答案

当 Spring 从 @Service 或 @Component 注解创建 Bean 定义时,默认情况下它会通过小写类名的首字母为 bean 创建一个 id。如果你想覆盖该行为,你可以在注释中提供一个替代 id,例如。 @Service("profileService").

关于您在使用存储库时遇到的问题 - 默认情况下,Spring 通过将“Impl”附加到存储库接口(interface)名称来查找存储库的自定义实现。如果找到它,它不会创建默认实现。所以,如果你有 UserRepositoryImpl extends UserRepository 而不是 UserRepositoryImpl extends DatatablesCriteriasRepository 那么 Spring 就不会创建 userRepository bean。此外,如果您将 @NoRepositoryBean 注释添加到 UserRepository 接口(interface),这将抑制 userRepository bean 的创建。

但是,UserRepositoryImpl 确实应该实现 UserRepository。如果它真的打算扩展 DatatablesCriteriasRepository,那么它应该被命名为 DatatablesCriteriasRepositoryImpl。让 UserRepsitoryImpl 扩展 DatatablesCriteriasRepository 表明设计中存在问题。

关于java - spring bean的bean ID是什么实现了一个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29457834/

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