У меня есть веб-приложение Java, разработанное как трехуровневая архитектура. В настоящее время у меня есть два разных уровня базы данных. Весь мой код данных Acces Layer сконцентрирован в пакете. Желаемый уровень данных определяется в файле конфигурации. Поэтому другой пакет необходимо импортировать в зависимости от файла конфигурации. Оба datalayers взаимодействуют с бизнес-слоем через объект DBfacade. Можно ли решить, какой пакет необходимо импортировать, или я должен переименовать свои DBfacades, поэтому у меня есть 2 разных имени и импортировать оба пакета?Импорт пакета Java в зависимости от конфигурации
ответ
Зависит ли слой данных от окружающей среды? Если да, просмотрите источники данных с JNDI. Это позволит среде инкапсулировать детали низкого уровня.
Вы используете очень плохой дизайн, если вы делаете 2 класса с одинаковыми именами и одинаковыми сигнатурами методов в отдельных пакетах, и вы переключаетесь между этими реализациями, изменяя импорт. Очень плохой дизайн.
Обратите внимание, что раздел импорта существует ТОЛЬКО до компиляции. Затем у вас есть полностью квалифицированные ссылки на байт-код.
Используйте интерфейсы и реализации, swich между реализациями с использованием IoC или отражения. Или импортируйте обе реализации и решите, какой из них вызывать через if, но IoC дает вам больше гибкости (например, возможность добавления новой реализации без изменения кода).
import
Сам оператор обрабатывается во время компиляции, поэтому вы не можете «импортировать различные пакеты в зависимости от файла конфигурации».
Однако вы можете использовать разные библиотеки в зависимости от вашей конфигурации. Например, если у вас есть 2 различных реализаций интерфейса Foo
: FooOne
и FooTwo
расположенные в разных jar
файлов вы можете реализовать завод FooFactory
, который загружает одну из реализаций, принимающих конфигурацию из файла, например:
public class FooFactory {
public Foo createFoo() throws Exception{
Properties props = new Properties();
props.load("/var/config.properties");
return Class.forName(props.getProperty("foo.class")).newInstance();
}
}
- 1. Java Импорт пакета
- 2. Зависимости от пакета
- 3. избежать зависимости от пакета
- 4. конфликт зависимости от пакета
- 5. Зависимости от экземпляра пакета
- 6. Импорт пакета без имени Java
- 7. Невозможно изменить зависимости от конфигурации
- 8. Как разрешить импорт пакета java в проект?
- 9. частично наследуют зависимости от конфигурации
- 10. Gradle - указание зависимости от конфигурации
- 11. Конфигурация конфигурации конфигурации Spring Boot от внешней зависимости
- 12. В зависимости от локального пакета в кабинете
- 13. Ошибка зависимости от пакета "нет пакета под названием 'stringi'"
- 14. Импорт пакета javax в Java без IDE
- 15. Импорт пакета Java в android android
- 16. Импорт python в зависимости от внутренних данных
- 17. py2neo: в зависимости от вставки пакета
- 18. В зависимости от версии X.Y. * пакета
- 19. Возможны зависимости между модулями в зависимости от конфигурации в SBT?
- 20. Связывание библиотек в зависимости от конфигурации проекта
- 21. Использование метакласса в зависимости от конфигурации
- 22. Инициализировать класс в зависимости от значения конфигурации
- 23. Импорт XML-конфигурации в проект на основе java-конфигурации (аннотация)
- 24. Импорт пакета OSGI в eclipse
- 25. Импорт/экспорт конфигурации db
- 26. Импорт модулей из тестового пакета пакета зависимостей
- 27. Нерешенный импорт пакета в OSGi
- 28. Как установить зависимости пакета пакета?
- 29. Импорт пакета в Python
- 30. Java-зависимости в зависимости от операционной системы?
Там нет условных импорта пакетов в Java. Основываясь на описании проблемы, я бы порекомендовал вам начать чтение на Inversion of Control (IOC). – Perception