Как заставить Spring / Gradle распознавать инициализацию JdbcTemplate - PullRequest
0 голосов
/ 26 апреля 2018

Я создал небольшое приложение REST контроллера SpringBoot / Gradle, но я возникли проблемы при инициализации соединения с базой данных Postgresql. Мое заявление включает в себя следующий класс, который используется для доступа к базе данных:

@Component
public class UserSettingDAO {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private DataSource dataSource;
    ...
}

В первой версии программы я включил в /src/main/resources/application.properties следующее:

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://...
spring.datasource.username=...
spring.datasource.password=...

В этой версии моя служба REST успешно связана с базой данных. Тем не мение, для согласованности с другими проектами в моей группе я изменил инициализацию dataSource и jdbcTemplate следующим образом:

Сначала я удалил это свойство определения выше от application.properties. Затем я создал файл инициализации XML resources/resources_deployment1/spring-resource1.xml, который включал следующее:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" value="classpath:pdao_connection.properties"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${driverClassName}" />
    <property name="url" value="${url}" />
    <property name="username" value="${db.username}" />
    <property name="password" value="${db.password}"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <constructor-arg ref="dataSource"/>
</bean>

где указанный файл resources/resources_deployment1/pdao_connection.properties содержит следующее:

driverClassName=org.postgresql.Driver
db.username=...
db.password=...
url=jdbc:postgresql://...

После этого, когда я развернул свое приложение (в Websphere Liberty) и нажал REST служба из Chrome, она не смогла со следующим сообщением:

Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.

Кажется, что в длинной цепочке ссылок есть разрыв, так что Spring делает не имеют доступа к необходимым параметрам подключения. Как я могу это исправить, пока сохранить параметры развертывания в подпапке resources? В в частности, как мне убедить операции сборки и выполнения посмотреть в resources/resources_deployment1 папка?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Я наткнулся на ответ: добавив следующий фрагмент кода в тот же пакет, где я использую jdbcTemplate

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

@Configuration
@ImportResource("classpath:spring-resource1.xml")
public class DAOConfiguration {
}

, кажется, сообщает Spring, что он должен искать в указанном XML-файле, который фактически находится в каталоге resources/ проекта.

0 голосов
/ 26 апреля 2018

требуется артефакты java-коннектора spring-jdbc и postgresql внутри вашего web.xml или pom.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...