2010-11-08 6 views
0

Je voudrais demander comment dois-je charger le bean (défini dans l'application xml) dans ma classe de service dans l'application Spring. J'ai essayé de le charger à l'aide (et des solutions simillar):Spring - impossible de charger les informations du bean en service

public class MyService { 
    public void myMethod() { 
     ApplicationContext context = new ClassPathXmlApplicationContext("security-config.xml"); 
     LdapPersonDAO ldapPersonDAO = (LdapPersonDAO) context.getBean("ldapPersonDAO"); 
    } 
} 

sécurité config.xml

<bean id="ldapPersonDAO" class="shdb.ldap_sync.dao.LdapPersonDAO"> 
<property name="ldapTemplate" ref="ldapTemplate" /> 
</bean> 

mais pas de solution fonctionne pour moi. Y a-t-il une solution standard?

Merci pour toute aide,

Mateo

Répondre

0

Essayez le nouveau ClassPathXmlApplicationContext ("/ security-config.xml"), mais il serait utile si vous avez fourni plus de détails sur les erreurs que vous obtenez.

De même, vous devez éviter les recherches et la classe MyService doit également être déclarée dans le contexte de l'application et ldapPersonDAO doit être déclarée. Ensuite, les utilisateurs de MyService l'injecteraient également, et ainsi de suite jusqu'à la classe principale de votre application que vous obtenez également dans le contexte de l'application.

+0

Je suis désolé que je n'ai pas fourni le message d'erreur J'ai pensé que je me trompe donc le message d'erreur ne serait pas nécessaire. Quoi qu'il en soit, le problème persiste toujours. J'ai mon security-config.xml dans le dossier WEB-INF/spring donc j'ai essayé toutes les combinaisons possibles de path et l'erreur est toujours la même org.springframework.beans.factory.BeanDefinitionStoreException: IOException analyse le document XML à partir du chemin de la classe ressource [security-config.xml]; Causée par: java.io.FileNotFoundException: la ressource de chemin de classe [security-config.xml] ne peut pas être ouverte car elle n'existe pas Existe-t-il une solution? – Mateo

+0

Je l'ai résolu en suivant vos conseils. J'ai chargé le grain directement à l'endroit où j'en ai besoin (contrôleur) et cela fonctionne. J'ai utilisé le code suivant: WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext (request.getSession(). GetServletContext()); LdapPersonDAO ldapPersonDAO = (LdapPersonDAO) webApplicationContext.getBean ("ldapPersonDAO"); – Mateo

Questions connexes