2016-08-17 1 views
1

Ich bin neu in Spring Framework und versuche derzeit herauszufinden, wie eine Datei namens servlet-context.xml automatisch beim Start der Anwendung geladen wird. Diese Datei enthält eine Bean-Definition, die ich unter Verwendung von @Autowired in meinem Anwendungscode verwenden möchte.Wie lade ich servlet-context.xml automatisch?

Hinweis: Ich weiß, dass ich von Hand so etwas wie die folgenden tun kann, um Bohnen zu laden, aber das funktioniert nicht, wenn Sie @Autowired verwenden:

ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); 

SomeObjectType x = (SomeObjectType)context.getBean("someObjectType"); 

ich diesen Code Probe von einem anderen gefunden Tutorial, die Art erzählt, wie servlet-context.xml geladen wird, aber es wurde von einem Webanwendungsprojekt genommen, das MVC-Muster verwendete. Ich habe nicht eine Web-App-MVC verwenden, so dass ich glaube nicht, dass es mir gilt:

<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

den Inhalt meiner servlet-context.xml Datei sind die folgenden:

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

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

</beans:beans> 

Was ist also die sauberste und einfachste Möglichkeit, servlet-context.xml Datei zu laden?

+1

was meinst du mit „das funktioniert nicht, wenn Sie @Autowired verwenden“? autowired ist eine Annotation, die im Code erscheint und nichts mit der Definitionsdatei für Beans zu tun hat – mangusta

Antwort

0

Sie uselistener können Kontext laden ...

<listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/spring/appServlet/servlet-context.xml 
     </param-value> 
    </context-param> 
Verwandte Themen