Bean не сформирован для источника данных в проекте Spring MVC - PullRequest
0 голосов
/ 17 февраля 2020

Я сталкиваюсь с ошибкой «Требуется источник данных о свойствах».

Ниже приведена конфигурация в dao-bean xml.

<bean id="Template" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:/comp/env/jdbc/TEMPLATES" />
    </bean>

<bean id="languageDao" class="com.test.daoImpl.LanguageDAOImpl"
        init-method="init">
        <property name="cspLanguageGet" value="csp_LANGUAGE_Get" />
    </bean>

Класс имеет следующие конфигурации:

private DataSource Template;

    private SimpleJdbcCall languageGet;

    private String cspLanguageGet;

    @Autowired
    @Qualifier("Template")
    public void setTemplate(DataSource Template) {
        this.Template = Template;
    }

    @Required
    public void setCspLanguageGet(String cspLanguageGet) {
        this.cspLanguageGet = cspLanguageGet;
    }

    public void init() {
        this.languageGet = new SimpleJdbcCall(Template).withProcedureName(cspLanguageGet);
        this.languageGet.compile();
    }

Я пробовал использовать многие решения, которые нашел, но не повезло. Я не могу использовать, поскольку моя java версия - 1.8

Ниже приведена трассировка стека ошибок.

java.lang.IllegalArgumentException: Property 'dataSource' is required
        at org.springframework.jdbc.support.JdbcAccessor.afterPropertiesSet(JdbcAccessor.java:134)
        at org.springframework.jdbc.core.JdbcTemplate.<init>(JdbcTemplate.java:165)
        at org.springframework.jdbc.core.simple.AbstractJdbcCall.<init>(AbstractJdbcCall.java:87)
        at org.springframework.jdbc.core.simple.SimpleJdbcCall.<init>(SimpleJdbcCall.java:69)
        at com.aexp.travel.docdelivery.tcapp.daoImpl.LanguageDAOImpl.init(LanguageDAOImpl.java:56)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)

Контекст. xml, развернутый в tomcat, имеет следующую конфигурацию:

<Resource
    name="jdbc/TEMPLATES"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="30"
    maxWait="10000"
    driverClassName="net.sourceforge.jtds.jdbc.Driver"
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
    url="jdbc:jtds:sqlserver://gtwtdwdbsqlv001.gbt.gbtad.com:1433;databaseName=Template"
    username="Test"
    password="*******"
    />

Я застрял в этом за последние 3 дня. Не могу решить эту проблему. Может кто-нибудь, пожалуйста, помогите мне понять где это идет не так

1 Ответ

0 голосов
/ 17 февраля 2020

Это зависит от того, какую версию Spring вы используете, но Вы можете включить компонент DataSoure , как показано ниже

<bean name="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="org.h2.Driver" />
    <property name="url" value="jdbc:h2:file:C:/temp/test" />
    <property name="username" value="sa" />
    <property name="password" value="" />
    <property name="initialSize" value="2" />
    <property name="maxActive" value="5" />
</bean>

ИЛИ

@Bean
public DataSource getDataSource() {
  DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
  dataSourceBuilder.driverClassName("org.h2.Driver");
  dataSourceBuilder.url("jdbc:h2:file:C:/temp/test");
  dataSourceBuilder.username("sa");
  dataSourceBuilder.password("");
  return dataSourceBuilder.build();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...