2016-12-06 3 views
0

Я пытаюсь создать свой собственныйDataSource от application-prod.properties.Создайте собственный источник данных с весенними свойствами

Теперь я знаю, что мой application.properties получает читать, так как он подобрать prod активный профиль (как показано на консоли)

В моем application-prod.properties я следующее:

jdbc.url=jdbc:postgresql://localhost:5432/myDb 
jdbc.username=root 
jdbc.password=root 
jdbc.driverClassName=org.postgresql.Driver 

Теперь, если я изменю prefix, моя консоль генерирует ошибку времени компиляции Could not resolve Spring property placholder, которая имеет смысл. Это также показывает, что компилятор фактически проверяет, существует ли @Value в файле properties.

@Component 
open class BaseDAO(
     //@Value("\${jdbc.url}") private val url: String, 
     //@Value("\${jdbc.username}") private val username: String, 
     //@Value("\${jdbc.password}") private val password: String 
) { 
    @Value("\${jdbc.url}") 
    lateinit open var url: String 
    @Value("\${jdbc.username}") 
    lateinit open var username: String 
    @Value("\${jdbc.password}") 
    lateinit open var password: String 

    lateinit open public var datasource: DataSource; 

    open fun getDs(): DataSource { 
     return HikariCP.init(name="pool1", url = url, username = username, password = password) 
    } 
} 

Теперь, как вы можете видеть, что я попытался прохождения @Value в конструкторе. Но так как я extendBaseDAO во всех своих классах, он жаловался, что конструктор пуст (class SomeDAO : BaseDAO()).

Проблема в том, что мои свойства url, username и password не инициализируются.


Есть ли способ разрешить properties (без использования @Autowired на всех инициализаций/классов.)

Единственное, что я хочу, чтобы прочитать свойства из этого файла и использовать их, не ищет «Весна лучшие практики» но для раствора

ответ

0

Есть класс @Configuration, который содержит инициализацию для Datasource с теми свойствами впрыскивается в него, а затем автоматически провод, DataSource bean во всех ваших DAO. Таким образом, вам не нужно вводить эти значения свойств в DAO.

+0

Но это устранит проблему, когда '@ Value' не устанавливает переменную? – Ivaro18

Смежные вопросы