1. Обзор
По дизайну классы аннотированы @Repository, @Service, @Controller , и т.д. управляются весна и инъекционные конфигурации есть легко и естественно. Что не так просто, так это переходя конфигурации к классам, которые непосредственно не управляются Spring.
В таком случае, мы можем использовать Класс Загрузчик- на основе загрузки конфигурации или просто мгновенного воспроизведения наших классов в другой фасоли и установить необходимые парамы вручную – это предлагаемый вариант, потому что конфигурация записей не должны храниться в В.свойства файлы исключительно.
В этой быстрой статье мы будем освещать тему загрузки В.свойства файлы с Java Класс Загрузчик а также инъекция уже загруженная конфигурация к весеннему в неуправляемый класс.
2. Конфигурация нагрузки с погрузчиком класса
Проще говоря, В.свойства файлы ресурсов файлов, держащих некоторые config информации. Вместо сторонних реализаций, которые поддерживают автоматическую загрузку конфигурации приложения, например, реализованную весной, мы можем использовать Java- Класс Загрузчик сделать то же самое.
Мы создадим контейнерный объект, который будет Недвижимость определены в ресурсFileName . Для заполнения контейнера конфигурацией мы будем использовать Класс Загрузчик .
Давайте определим СвойстваЗагрузчик класс, который реализует loadProperties (String resourceFileName) метод:
public class PropertiesLoader { public static Properties loadProperties(String resourceFileName) throws IOException { Properties configuration = new Properties(); InputStream inputStream = PropertiesLoader.class .getClassLoader() .getResourceAsStream(resourceFileName); configuration.load(inputStream); inputStream.close(); return configuration; } }
Каждый Класс объект содержит ссылку на Класс Загрузчик , что мгновенно его; это объект, который в первую очередь отвечает за загрузку классов, но в этом учебнике мы будем использовать его для загрузки файла ресурсов вместо обычного класса Java. Класс Загрузчик ищет ресурсFileName на классной симпатии.
После этого мы загружаем файл ресурса в ВходНая трансляция через getResourceAsStream API.
В приведенном выше примере мы определили контейнер конфигурации, который может ресурсFileName с помощью загрузка (InputStream) API.
Метод загрузки реализует разбор В.свойства файлы с поддержкой “:” или “=” символов в качестве делимитаторов. Кроме того, оба “#” или “!” символы, используемые в начале новой строки, являются маркерами комментариев и вызывают игнорирование этой строки.
Наконец, давайте прочитаем точное значение определенной записи конфигурации из наших файлов конфигурации:
String property = configuration.getProperty(key);
3. Конфигурация загрузки с весны
Второе решение заключается в использовании функции Spring Spring для обработки некоторых низкоуровневых нагрузок и обработки файлов.
Давайте определим Инициализатор которая будет удерживать конфигурацию, необходимую для инициализации нашего пользовательского класса. Во время Бин инициализация, фреймвас будет загружать все поля, аннотированные @Value из В.свойства файл конфига:
@Component public class Initializer { private String someInitialValue; private String anotherManagedValue; public Initializer( @Value("someInitialValue") String someInitialValue, @Value("anotherValue") String anotherManagedValue) { this.someInitialValue = someInitialValue; this.anotherManagedValue = anotherManagedValue; } public ClassNotManagedBySpring initClass() { return new ClassNotManagedBySpring( this.someInitialValue, this.anotherManagedValue); } }
Инициализатор теперь может нести ответственность за мгновенное ClassNotManagedBySpring .
Теперь мы просто получить доступ к нашим Инициализатор экземпляр и запустить initClass () метод на нем, чтобы справиться с мгновенной нашей пользовательской ClassNotManagedBySpring :
ClassNotManagedBySpring classNotManagedBySpring = initializer.initClass();
Как только у нас будет ссылка на Инициализатор , мы сможем мгновенно наши пользовательские ClassNotManagedBySpring.
4. Резюме
В этом быстром учебнике мы сосредоточились на чтении свойств в классе Non-Spring Java.
Как всегда, пример реализации можно найти более на GitHub .