Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457

    Spring - Configurazione del placeholder

    Salve a tutti,
    sto cercando di capire la seguente dicitura presente nel file applicationContext di Spring:


    codice:
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<property name="location" value="file:C:/config/pagtelprest/config.ini" />
    </bean>
    Ho cercando tra le api di spring la <property name="location", e non l'ho trovata... che io sappia le properties che vengono iniettate nell'applicationContext devono essere presenti anche nella classe a cui fanno riferimento...

    Per favore mi date qualche input?

    Grazie 1000 per ogni vostra risposta

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    Smanettando per la rete, ho capito il significato, cioè la property nell'application di spring sta per setProperty quindi nel mio caso setLocation.
    In aggiunta vorrei chiedervi se nella dicitura <bean id="propertyConfigurer"... la parola propertyConfigurer sia una parola chiave.

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Mitele
    Smanettando per la rete, ho capito il significato, cioè la property nell'application di spring sta per setProperty quindi nel mio caso setLocation.
    Esattamente.


    Originariamente inviato da Mitele
    In aggiunta vorrei chiedervi se nella dicitura <bean id="propertyConfigurer"... la parola propertyConfigurer sia una parola chiave.
    No, è solo il nome del bean.
    E' come se avessi scritto:
    codice:
    PropertyPlaceholderConfigurer propertyConfigurer = new PropertyPlaceholderConfigurer();
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    No, è solo il nome del bean. E' come se avessi scritto:
    codice:
    PropertyPlaceholderConfigurer propertyConfigurer = new PropertyPlaceholderConfigurer()
    Una volta definito il placeHolder, posso definire il log:
    codice:
    <bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    		<property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
    		<property name="targetMethod" value="initLogging" />
    		<property name="arguments">
    			<list>
    				<value>${log4j_properties_path}</value>
    			</list>
    		</property>
    	</bean>
    E come fa a funzionare il log, se nell'applicazione non c'è nessuna altra dicitura (nemmeno nel web.xml) ?
    Nella classi viene solo istanziato il log:
    codice:
    private static final Logger logger = Logger.getLogger(StampaLibriAction.class);
    Come fa a sapere l'applicazione dalle classi che le impostazioni dei log sono nell'applicationContext?

    Mi viene da pensare che log4jInitialization sia una parola chiave... però non ne sono del tutto convinto

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Mitele
    E come fa a funzionare il log, se nell'applicazione non c'è nessuna altra dicitura (nemmeno nel web.xml) ?
    Nella classi viene solo istanziato il log:

    private static final Logger logger = Logger.getLogger(StampaLibriAction.class);

    Come fa a sapere l'applicazione dalle classi che le impostazioni dei log sono nell'applicationContext?

    Mi viene da pensare che log4jInitialization sia una parola chiave... però non ne sono del tutto convinto
    Più che una parola chiave è importante il tipo.

    Spring ha un'interfaccia molto utile, ApplicationContextAware, che permette ai bean che la implementano di essere notificati quando viene caricato l'application context. Immagino che ci sia qualcuno che al caricamento del contesto va a cercarsi un bean del tipo X e lo usa per configurare alcune cose.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    Quando nella classe definisco il log
    codice:
    private static final Logger logger = Logger.getLogger(StampaLibriAction.class);
    come fa a sapere l'applicazione che il log deve scrivere nel file definito nell'applicationContext di spring?
    codice:
    <bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
    <property name="targetMethod" value="initLogging" />
    <property name="arguments">
    <list>
    <value>${log4j_properties_path}</value>
    </list>
    </property>
    </bean>
    L'applicazione usando la costante statica logger va a scrivere nel file definito da <bean id="log4jInitialization" .... Come fa a saperlo? Ti giuro ho cercato su molti manuali della rete... non capisco il perché?

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Un funzionamento di massima ho provato a spiegartelo: da qualche parte c'è un oggetto Spring che va a cercare nell'application context un bean di tipo MethodInvokingFactoryBean (ad esempio facendo applicationContext.getBean(MethodInvokingFactoryBe an.class).

    Non sono certo che il funzionamento sia proprio questo, ma a naso mi sembra ragionevole. Se vuoi sapere come funziona esattamente puoi andare su github e scaricarti i sorgenti di Spring Core..
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8

    Moderazione

    @Mitele: quando inserisci del codice nei post ricordati l'uso dei tag [code], in modo da evitare che il codice perda la formattazione; ora ho sistemato io, in futuro ricordatene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    Salve a tutti,
    ho fatto una ricerca su tutta l'applicazione e non ho trovato in nessun punto la chiamata al bean
    log4jInitialization.
    Nelle classi viene invocato il log con l'istruzione
    codice:
    private final Logger logger = Logger.getLogger(getClass());
    Il logger magicamente va a scrivere nel file recuperato dal file ${log4j_properties_path}, motivo per cui mi stavo chiedendo se la parola log4jInitialization fosse una parola diciamo chiave.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.