【问题标题】:Spring database configuration issueSpring数据库配置问题
【发布时间】:2016-06-30 23:47:38
【问题描述】:

我是Spring-MVC 的新手,我正在尝试创建一个Spring-MVC 项目,该项目在controller 中使用annotation 并创建databases

应用程序运行良好,当我将所有 xml 代码写入 spring-dispatcher-servlet.xml 文件时,但当我将 spring database connection xmlspring servlet xml 文件分开时,它停止工作。

以下代码成功在数据库中创建表,但无法加载控制器,当我尝试点击任何控制器时,它给了我404 not found 页面。 如果我在web.xml 文件中注释<listner> 代码,它会成功加载所有控制器,但不会执行任何数据库操作。

请指导我在这里做错了什么。

web.xml

<!--  JPA  -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring.xml</param-value>
    </context-param>



<!--  Servlet Dispatcher  -->
    <servlet>
        <servlet-name>spring-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

Spring.xml

    <mvc:annotation-driven />

    <context:annotation-config />
    <context:component-scan base-package="com.evantage.models" />
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/springDB" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>
    <!-- This produces a container-managed EntityManagerFactory; rather than 
        application-managed EntityManagerFactory as in case of LocalEntityManagerFactoryBean -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"/>

    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence"/>
        <property name="dataSource" ref="dataSource"/>
        <property name="persistenceUnitName" value="persistenceUnit"/>
        <property name="persistenceXmlLocation" value="/WEB-INF/persistence.xml" />
    </bean>



   <jpa:repositories base-package="com.evantagesoft.springmvctiles.repository"
                      entity-manager-factory-ref="entityManagerFactory"
                      transaction-manager-ref="transactionManager"/>

    <tx:annotation-driven transaction-manager="transactionManager" />

</beans>

Spring-dispatcher-servlet.xml

<context:component-scan base-package="com.evantage.controllers" />
 <mvc:annotation-driven /> 
<bean id="tilesConfigurer"
    class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles.xml</value>
        </list>
    </property>
    <property name="preparerFactoryClass"
        value="org.springframework.web.servlet.view.tiles2.SpringBeanPreparerFactory" />
</bean>

<!-- View Handler -->
<bean
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="favorPathExtension" value="true" />
    <property name="mediaTypes">
        <map>
            <entry key="xml" value="text/xml" />
            <entry key="json" value="application/json" />
            <entry key="html" value="text/html" />
            <entry key="less" value="text/html" />
        </map>
    </property>
    <property name="viewResolvers">
        <list>
            <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
                <property name="viewClass"
                    value="org.springframework.web.servlet.view.tiles2.TilesView" />
            </bean>
            <bean
                class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <!-- <property name="prefix" value="/"/> -->
                <property name="prefix">
                    <value>/WEB-INF/</value>
                </property>
                <property name="suffix">
                    <value>.jsp</value>
                </property>
            </bean>
        </list>
    </property>
</bean>

【问题讨论】:

    标签: java xml spring hibernate spring-mvc


    【解决方案1】:

    您需要在调度程序 servlet xml 中添加 context:component-scan base-package="controller package" 以使其工作。 需要组件扫描来扫描包并注册您的控制器类

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-31
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2017-08-10
    相关资源
    最近更新 更多