在配置 spring boot 中定义一个 bean 名称

Define a bean name in configuration spring boot

我的 spring 引导应用程序因以下错误而无法启动:A component required a bean named 'sessionScopedLdapUser' that could not be found

我的 bean 定义在这个 class:

@Configuration
public class RestTemplateClient {

    Logger logger = LoggerFactory.getLogger(SwitchController.class);

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Bean("sessionScopedLdapUser"); /************** <----
    @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
    public LdapUser requestScopedBean() {
        logger.info("LdapUser bean instance created");
        return new LdapUser();
    }

我在我的服务中使用了这个 bean class:

@Service
public class IsimRestApiImpl implements IsimRestApiService{

    

    @Autowired
    private RestTemplate restTemplate;

    @Resource(name = "sessionScopedLdapUser")
    LdapUser sessionScopedLdapUser;

我不确定我在配置中做错了什么。如果我在我的配置中添加 bean 名称(箭头所在的位置),我会得到 Annotations are not allowed here.

这可能与您的 bean 的作用域有关吗?我也觉得你不应该给这个豆子起个名字。如果你只做一个 LdapUser 类型的 bean,我认为没有必要 ...

我会尝试从 bean 中删除名称和范围,然后查看您的应用程序是否启动。在添加一些选项并弄清楚到底哪里出了问题之前。