Предотвращение конфликтов имен компонентов из импортированной библиотеки Spring BootJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Предотвращение конфликтов имен компонентов из импортированной библиотеки Spring Boot

Сообщение Гость »


Я разрабатываю библиотеку Maven, предназначенную для использования в приложении Spring Boot. Эта библиотека внутренне определяет пару bean-компонентов, которые загружаются в контекст Spring с помощью механизма автоматической настройки Spring. Ниже представлена ​​структура и ключевые файлы библиотеки:
Структура библиотеки:

Код: Выделить всё

-the-library
|  |-src
|  .   |-main
|  .   .  |-java
|  .   .  .  |-com.example.common
|  .   .  .  .  |-FooModuleConfiguration.java
|  .   .  .  .  |-ClockBean.java
|  .   .  |-resources
|  .   .  .  |-META-INF.spring
|  .   .  .  .  |-org.springframework.boot.autoconfigure.AutoConfiguration.imports
|  |-pom.xml
В моем

Код: Выделить всё

FooModuleConfiguration.java
У меня есть:

Код: Выделить всё

package com.example.common;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan
public class FooModuleConfiguration {

}
В моем

Код: Выделить всё

ClockBean.java
У меня есть:

Код: Выделить всё

package com.example.common;

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.time.Clock;

@Configuration
public class ClockBean {

@Bean
@ConditionalOnMissingBean(Clock.class)
public Clock clock() {
return Clock.systemDefaultZone();
}
}

}
И в моем

Код: Выделить всё

org.springframework.boot.autoconfigure.AutoConfiguration.imports
У меня есть:

Код: Выделить всё

com.example.common.FooModuleConfiguration
Проблема в том, что я пытаюсь определить схожие

Код: Выделить всё

ClockBean
в проекте (назовем его Bar), использующем указанную выше библиотеку. Это приводит к конфликту имен, что приводит к следующему исключению:

Код: Выделить всё

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.example.bar.BarApplication]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'clockBean' for bean class [com.example.common.ClockBean] conflicts with existing, non-compatible bean definition of same name and class [com.example.bar.ClockBean]
Я знаю, что могу вручную изменить имя класса или компонента в одном из проектов, но я ищу более общее решение. Есть ли способ автоматически добавлять префикс к каждому bean-компоненту, определенному в библиотеке, или изменить процесс генерации имени bean-компонента таким образом, чтобы он влиял только на bean-компоненты в библиотеке (или в пределах определенного пакета)? Или мне следует прибегнуть к использованию сложных имен классов внутри библиотеки (например,

Код: Выделить всё

FooCommonBeanConfig.java
) to minimize the risk of name conflicts?


Источник: https://stackoverflow.com/questions/781 ... ed-library
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как запретить maven обновлять библиотеки специально импортированной библиотеки?
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Аннотация @Retryable Предотвращение внедрения bean-компонентов в проекте Spring
    Гость » » в форуме JAVA
    0 Ответы
    54 Просмотры
    Последнее сообщение Гость
  • Как включить намек на тип для импортированной библиотеки .NET Pythonnet?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Конфликт имен компонентов Spring Boot
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Приложение Spring Boot "Имя боба для конфликтов класса бобов с существующими" - Как исключить пакет/класс из сторонней б
    Anonymous » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»