2012-08-31 23 views
6

Java-Spring I ha un progetto basato su moduli, ho un modulo per layer e modulo DAO per il livello aziendale che dipende dal layer DAO e dallo strato web dipendente dal livello DAO e dal livello aziendale.Java - Configurazione file di proprietà Spring per il file jar

Sto usando Maven per la compilazione del progetto. e jar di ogni componente sono raggruppati nella cartella lib dei progetti web.

Il problema è che ho il file di contesto di primavera e il file .property all'interno del vaso DAO e che segue è la mia configurazione ma non riesco a caricare le proprietà ho anche provato a prefisso value="classpath:abc.properties ma non ha funzionato.

Quando apro il vaso DAO, sia il contesto di primavera che i file .properties sono nella radice.

<bean id="applicationProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="abc.properties" /> 
    </bean> 

<bean id="cmfModelDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
     <property name="url" value="${jdbc.ConnectionUrl}"/> 
     <property name="username" value="${jdbc.Username}"/> 
     <property name="password" value="${jdbc.Password}"/> 
    </bean> 

qualche idea su come risolvere rapidamente questo problema?

+0

hai provato 'classpath *: abc.properties'? –

+0

Per supportare il commento sopra: http://stackoverflow.com/questions/3294423/spring-classpath-prefix-difference –

+0

sì ma non ha funzionato –

risposta

1

Ho un progetto web multi-modulo con la Primavera utilizzando il seguente codice:

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

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="${env.datasource.driver}" /> 
    <property name="url" value="${env.datasource.url}" /> 
    <property name="username" value="${env.datasource.username}" /> 
    <property name="password" value="${env.datasource.password}" /> 
</bean> 

Non dimenticate di verificare l'URL spazio dei nomi nel file XML:

xmlns:context="http://www.springframework.org/schema/context"; 

Env cartella deve essere in classpath, quindi Spring può trovarlo. Il mio file delle proprietà è anche all'interno di un barattolo, e sta funzionando bene.

0

Ho riscontrato che l'errore e l'int dovessero avere a che fare con il modo in cui si sta inizializzando il contesto, ad esempio nella mia app Web il problema riguardava il filtro che ho impostato nel file web.xml. Anche io alla fine non utilizzando un file XML, ma una classe annotata Config e ha questo nel web.xml:

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<context-param> 
    <param-name>contextClass</param-name> 
    <param-value> 
     org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
    </param-value> 
</context-param> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>com.myapp.configuration.SpringConfig</param-value> 
</context-param> 

Se davvero si vuole utilizzare un file XML è necessario modificare l'AnnotationConfigWebApplicationContext per un XmlWebApplicationContext. Dovresti dirci come stai iniziando il tuo contesto (come il codice o web.xml se questo non risolve il tuo problema)

Problemi correlati