2013-11-25 4 views
0

Я разрабатываю простое автономное приложение Java с использованием Spring и Hibernate, чтобы попытаться их изучить.Hibernate placeholder игнорируется

У меня возникли некоторые проблемы в конфигурации Spring и Hibernate, для того, чтобы действительно создать некоторый «полезный» результат от кода ...

Я пытался следовать примеру, как сообщалось в книга «Начиная с Hibernate второе издание» и «Pro Spring 3», но я имею, о Hibernate, эту проблему (я использую log4j для ведения журнала):

1824 [main] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.s[email protected]38638273: defining beans [dataSource,sessionFactory,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,personaDao,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy 
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [app-context.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: 
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [${jdbc.driverClassName}] 

кажется, что заполнитель игнорируется при анализе конфигурационных файлов

Здесь у меня есть скопировали экстракт из них:

приложение-context.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
xsi:schemaLocation=" 
http://www.springframework.org/schema/jdbc 
http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.2.xsd"> 

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="${jdbc.driverClassName}" /> 
     <property name="url" value="${jdbc.url}" /> 
     <property name="username" value="${jdbc.username}" /> 
     <property name="password" value="${jdbc.password}" /> 
    </bean> 

<bean id="sessionFactory" 
     class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="configLocation" > 
      <value>classpath:hibernate.cfg.xml</value> 
     </property> 
     <property name="configurationClass"> 
      <value>org.hibernate.cfg.AnnotationConfiguration</value> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${jdbc.dialect}</prop> 
       <prop key="hibernate.show_sql">true</prop> 
      </props> 
     </property> 
    </bean> 

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 

<tx:annotation-driven/> 




<bean id="personaDao" class="org.bladela.dataaccess.persona.PersonaDaoImpl"> 
     <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 

</beans> 

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 

     <session-factory> 
      <property name="show_sql">true</property> 

      <mapping class="org.bladela.dataaccess.persona.Persona"/> 



     </session-factory> 
</hibernate-configuration> 

jdbc.properties:

jdbc.driverClassName=org.postgresql.Driver 
jdbc.dialect=org.hibernate.dialect.PostgreSQLDialect 
jdbc.databaseurl=jdbc:postgresql://localhost:5432/employeemanagementdb 
jdbc.username=bladela 
jdbc.password=password 

Если я заменяю все заполнители их значениями, программа продолжает и соединяется с db (если я заменяю только один ... ошибка «идет» на следующую)

затем он возвращает неверный result (пустой список, когда он должен возвращать список с одним элементом), но, возможно, я спрошу об этом позже, если я не смогу его решить.

Любое предложение?

ответ

1

Я не вижу никаких PropertyPlaceholderConfigurer, указанных в вашем контексте. Как должны быть решены владельцы пространственных объектов?

Одним из решений является добавление

<context:property-placeholder location="classpath:jdbc.properties"/> 

в контекст.

+0

спасибо ... он работал (извините, что побеспокоил вас) Теперь я должен понять, почему список запроса возвращается пустой ... работа на завтра ... раз спасибо – bladela

+0

@bladela Добро пожаловать , Вот для чего мы здесь. Подумайте о том, чтобы помочь и принять ответы (и вопросы), которые были полезны. –

+0

Я пробовал ... но у меня нет необходимой репутации для того, чтобы повышать рейтинг Я приму свой ответ, как только сайт разрешит мне :) – bladela

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