【问题标题】:why i am getting this exception " org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController'为什么我会收到此异常“ org.springframework.beans.factory.BeanCreationException:创建名称为“homeController”的bean时出错
【发布时间】:2020-08-11 02:42:03
【问题描述】:

严重:向类 [org.springframework.web.context.ContextLoaderListener] 的侦听器实例发送上下文初始化事件的异常 java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.clearCache()V

homeController

@Controller
public class homeController {   
@Autowired
private proDaoInterface dao;

@RequestMapping("/test")
public String home(Model model) {
    List<ProductModel> productList = dao.getProductList();
    model.addAttribute("productList", productList);
    return "home";
 }

@RequestMapping("/view/{productID}")
public String viewProduct(@PathVariable String productID, Model model) throws IOException {
    ProductModel product = dao.getProductByID(productID);
    model.addAttribute(product);    
    return "viewProduct";
   }

web.xml

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

    <context-param>
        <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/dispatcher-servlet.xml,
                   /WEB-INF/applicationContext.xml
           </param-value>
    </context-param>

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

     <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>

这是我的 Dispatcher Servlet 文件 dispatcher-servlet.xml

    <context:component-scan base-package="com.home."></context:component-scan> 
     <mvc:annotation-driven/>

     <bean id="viewResolver"       
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
      </bean>

  <mvc:resources mapping="/resources/**"    location="/WEB-INF/resources/" />
  <mvc:resources mapping="/images/**"   location="/WEB-INF/resources/images/" />
  <mvc:resources mapping="/css/**"      location="/WEB-INF/resources/css/" />
  <mvc:resources mapping="/fonts/**"        location="/WEB-INF/resources/fonts/" />
  <mvc:resources mapping="/js/**"       location="/WEB-INF/resources/js/" />
  <mvc:resources mapping="/view/**"       location="/view/" />
  <tx:annotation-driven transaction-manager="transactionManager" />
    </beans>

applicationContext.xml

    <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
    <property name="username" value="system"></property>
    <property name="password" value="admin"></property>
  </bean>

  <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hbm2ddl.auto">update</prop>
            <prop key="dialect">org.hibernate.dialect.OracleDialect</prop>
            <prop key="connection.pool_size">1</prop>
            <prop key="show_sql">true</prop>
            <prop key="show_format">true</prop>
        </props>
    </property>

    <property name="packagesToScan">
        <list>
            <value>com.home.*</value>           
        </list>
    </property>
 </bean>

 <bean id="transactionManager"
      class="org.springframework.orm.hibernate4.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory"/>
  </bean>

pom.xml

  <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>4.3.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>4.3.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>bootstrap</artifactId>
        <version>4.4.1-1</version>
    </dependency>

    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>jquery</artifactId>
        <version>2.2.3</version>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.1.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jasper</artifactId>
        <version>9.0.12</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>5.0.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>5.0.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>5.0.1.RELEASE</version>
  </dependency>
  <dependency>
     <groupId>org.hibernate.javax.persistence</groupId>
     <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.2.Final</version>
 </dependency>
 <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.0.1.Final</version>
</dependency>
    <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.0.1.Final</version>
        </dependency>
         <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc14</artifactId>
            <version>10.2.0.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.1.RELEASE</version>
        </dependency>
</dependencies>

【问题讨论】:

  • 如果这是一个 maven 项目,请通过这个answer。如果您仍然无法解决问题,请使用 pom.xml / dependencies 更新您的问题。
  • 我试过了,但错误是一样的
  • 我添加了 pom.xml 文件。我完全被困住了。
  • 你修复了依赖关系吗?你能解决这个问题吗?

标签: spring


【解决方案1】:

来自Spring Security 5.1 的参考文档。

Spring Security 针对 Spring Framework 5.1.1.RELEASE 构建,但是 通常应该适用于任何较新版本的 Spring Framework 5.x 许多用户会遇到的问题是 Spring Security 的 传递依赖关系解决 Spring Framework 5.1.1.RELEASE 哪个 可能会导致奇怪的类路径问题。

pom.xml 显示 Spring Framework 版本为 4.3.0.RELEASE,Spring 安全版本为 5.1.1.RELEASE。不同工件的不兼容 Spring 框架版本的混合将导致此类问题。

请查看共享文档以了解如何解决该问题。引用documentation。使用 BOM ,不需要指定依赖的 Spring 框架工件的版本。这也将有助于 Spring 框架版本的未来升级。

解决这个问题的最简单方法是使用 spring-framework-bom 在您的 pom.xml 部分中,如图所示 下面:

<dependencyManagement>
    <dependencies>
        <!-- ... other dependency elements ... -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>5.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

将确保 Spring Security 的所有传递依赖 使用 Spring 5.1.1.RELEASE 模块

【讨论】:

    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 2016-06-05
    • 2020-02-21
    • 2018-04-27
    相关资源
    最近更新 更多