Search code examples
springspring-mvcjpaspring-data-jpa

How i can resolved JpaRepository <> in Spring MVC


I am working on a Spring MVC project and I want to create a repository interface that extends JpaRepository. However, I'm encountering compilation errors indicating that some JAR files might be missing or there are conflicts between the JARs.

Here's my repository interface:

public interface  StudentRepository extends JpaRepository<Student , Long> {
}

I've included the following JAR files in my project:

antlr-2.7.7.jar
aopalliance-1.0.jar
aspectjrt-1.8.0.jar
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.4.Final.jar
hibernate-core-4.3.5.Final.jar
hibernate-entitymanager-4.3.5.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
hsqldb-2.3.2.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
javax.servlet-api-3.1.0.jar
javax.servlet.jsp.jstl-1.2.5.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
jcl-over-slf4j-1.7.7.jar
jsp-api-2.1.jar
jstl-api-1.2.jar
serializer-2.7.2.jar
servlet-api-2.5.jar
slf4j-api-1.7.7.jar
spring-aop-4.0.7.RELEASE.jar
spring-beans-4.0.7.RELEASE.jar
spring-context-4.0.7.RELEASE.jar
spring-core-4.0.7.RELEASE.jar
spring-data-commons-1.8.0.RELEASE.jar
spring-data-jpa-1.6.0.RELEASE.jar
spring-expression-4.0.7.RELEASE.jar
spring-jdbc-4.0.7.RELEASE.jar
spring-orm-4.0.7.RELEASE.jar
spring-tx-4.0.7.RELEASE.jar
spring-web-4.0.7.RELEASE.jar
spring-webmvc-4.0.7.RELEASE.jar
xalan-2.7.2.jar

My Repository Class

package dao;
import entity.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface StudentDao extends CrudRepository<Student, Long> {
    // methods if any
}

My Controller Class

package controller;

import dao.StudentDao;
import entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
public class StudentController {

    @Autowired
     StudentDao studentDao;

    @RequestMapping("/student")
    public String studentList(Model model) {
        List<Student> students = (List<Student>) studentDao.findAll();
        model.addAttribute("users", students);
        System.out.println("List of students: " + students);
        System.out.println("Controller of students");
        return "student";
    }
}

ApplicationContext.xml is here

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

    <!-- Load properties from application.properties -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="/WEB-INF/application.properties" />
    </bean>
 <context:annotation-config />
    <!-- Enable MVC annotations -->
    <mvc:annotation-driven />

    <!-- Serve static resources -->
    <mvc:resources mapping="/reports/**" location="/WEB-INF/reports/" />
    <mvc:resources mapping="/images/**" location="/WEB-INF/images/" />
    <mvc:resources location="/WEB-INF/resources/" mapping="/resources/**"/>

    <!-- Enable transaction management -->
    <tx:annotation-driven transaction-manager="jpaTransactionManager"/>

    <!-- Component scan for all relevant packages -->
    <context:component-scan base-package="controller, service, dao, config, dto,entity"/>

    <!-- Configure data source -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/springdb" />
        <property name="username" value="root" />
        <property name="password" value="root" />
    </bean>

    <!-- Configure JPA EntityManagerFactory -->
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="entity.Student" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <property name="jpaProperties">
            <props>
                <!-- Set Hibernate dialect -->
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <!-- Show SQL queries in console for debugging -->
                <prop key="hibernate.show_sql">true</prop>
                <!-- Automatically update database schema -->
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>

    <!-- Configure JPA Transaction Manager -->
    <bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

</beans>

Errors in console i am facing

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'studentController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: dao.StudentDao controller.StudentController.studentDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [dao.StudentDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:293)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1186)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)

Solution

  • Update

    • apache-tomcat-9.0.90
    • JDK 1.8.0_412
    • spring-core-4.0.7.RELEASE.jar
    • spring-orm-4.0.7.RELEASE.jar
    • spring-data-jpa-1.6.0.RELEASE.jar
    • spring-webmvc-4.0.7.RELEASE.jar
    • spring-web-4.0.7.RELEASE.jar

    UPDATE Eclipse Dynamic Web WAR

    hello-tomcat9-web$ tree
    .
    └── src
        └── main
            ├── java
            │   └── com
            │       └── example
            │           ├── controller
            │           │   └── UserController.java
            │           ├── model
            │           │   └── User.java
            │           └── repository
            │               └── UserRepository.java
            └── webapp
                ├── META-INF
                │   └── MANIFEST.MF
                └── WEB-INF
                    ├── lib
                    │   ├── antlr-2.7.7.jar
                    │   ├── aopalliance-1.0.jar
                    │   ├── aspectjrt-1.8.0.jar
                    │   ├── commons-logging-1.1.3.jar
                    │   ├── dom4j-1.6.1.jar
                    │   ├── hibernate-commons-annotations-4.0.4.Final.jar
                    │   ├── hibernate-core-4.3.5.Final.jar
                    │   ├── hibernate-entitymanager-4.3.5.Final.jar
                    │   ├── hibernate-jpa-2.1-api-1.0.0.Final.jar
                    │   ├── hsqldb-2.3.2.jar
                    │   ├── jandex-1.1.0.Final.jar
                    │   ├── javassist-3.18.1-GA.jar
                    │   ├── javax.servlet-api-3.1.0.jar
                    │   ├── javax.servlet.jsp.jstl-1.2.5.jar
                    │   ├── jboss-logging-3.1.3.GA.jar
                    │   ├── jboss-logging-annotations-1.2.0.Beta1.jar
                    │   ├── jboss-transaction-api_1.2_spec-1.0.0.Final.jar
                    │   ├── jcl-over-slf4j-1.7.7.jar
                    │   ├── jsp-api-2.1.jar
                    │   ├── jstl-api-1.2.jar
                    │   ├── serializer-2.7.2.jar
                    │   ├── servlet-api-2.5.jar
                    │   ├── slf4j-api-1.7.7.jar
                    │   ├── spring-aop-4.0.7.RELEASE.jar
                    │   ├── spring-beans-4.0.7.RELEASE.jar
                    │   ├── spring-context-4.0.7.RELEASE.jar
                    │   ├── spring-core-4.0.7.RELEASE.jar
                    │   ├── spring-data-commons-1.8.0.RELEASE.jar
                    │   ├── spring-data-jpa-1.6.0.RELEASE.jar
                    │   ├── spring-expression-4.0.7.RELEASE.jar
                    │   ├── spring-jdbc-4.0.7.RELEASE.jar
                    │   ├── spring-orm-4.0.7.RELEASE.jar
                    │   ├── spring-tx-4.0.7.RELEASE.jar
                    │   ├── spring-web-4.0.7.RELEASE.jar
                    │   ├── spring-webmvc-4.0.7.RELEASE.jar
                    │   ├── xalan-2.7.2.jar
                    │   └── xml-apis-1.0.b2.jar
                    ├── spring
                    │   ├── application-context.xml
                    │   └── dispatcher-config.xml
                    ├── views
                    │   └── index.jsp
                    └── web.xml
    

    User.java

    package com.example.model;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    
    @Entity
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
        private String name;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    UserRepository.java

    package com.example.repository;
    
    import org.springframework.data.repository.CrudRepository;
    import com.example.model.User;
    
    public interface UserRepository extends CrudRepository<User, Long> {
    }
    

    UserController.java

    package com.example.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import com.example.model.User;
    import com.example.repository.UserRepository;
    
    @Controller
    public class UserController {
    
        @Autowired
        private UserRepository userRepository;
        
        
        @RequestMapping(value = "/",method = RequestMethod.GET)
        public String index(Model model) {
            model.addAttribute("users", userRepository.findAll());
            return "index";
        }
    
        @RequestMapping(value = "/add",method = RequestMethod.POST)
        public String addUser(@RequestParam String name) {
            User user = new User();
            user.setName(name);
            userRepository.save(user);
            return "redirect:/";
        }
        @RequestMapping(value = "/del",method = RequestMethod.GET)
        public String delUser(@RequestParam Long id) {
            userRepository.delete(id);        
            return "redirect:/";
        }    
    }
    

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
        <title>User List</title>
    </head>
    <body>
        <h1>User List</h1>
        <form action="add" method="post">
            <input type="text" name="name" placeholder="Enter user name" required />
            <input type="submit" value="Add User" />
        </form>
        <ul>
            <c:forEach items="${users}" var="user">
                <li>${user.id} - ${user.name} - 
     <a href="<c:url value='/del'><c:param name='id' value='${user.id}'/></c:url>">Delete User</a>
                </li>
            </c:forEach>
        </ul>
    </body>
    </html>
    

    dispatcher-config.xml

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="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
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <context:component-scan base-package="com.example" />
    
        <mvc:annotation-driven />
        <mvc:default-servlet-handler />
    
        <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/" />
            <property name="suffix" value=".jsp" />
        </bean>
    </beans>
    

    application-context.xml

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:jpa="http://www.springframework.org/schema/data/jpa"
        xsi:schemaLocation="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
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/data/jpa 
            http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
    
        <context:component-scan base-package="com.example" />
        <context:annotation-config />
    
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="org.hsqldb.jdbc.JDBCDriver" />
            <property name="url" value="jdbc:hsqldb:mem:testdb" />
            <property name="username" value="sa" />
            <property name="password" value="" />
        </bean>
    
        <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="packagesToScan" value="com.example.model" />
            <property name="jpaVendorAdapter">
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                    <property name="generateDdl" value="true" />
                    <property name="showSql" value="true" />
                </bean>
            </property>
        </bean>
    
        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="entityManagerFactory" ref="entityManagerFactory" />
        </bean>
    
        <tx:annotation-driven />
    
        <jpa:repositories base-package="com.example.repository" />
    </beans>
    

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
      <display-name>hello-tomcat9-web</display-name>
      
          <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
        
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/application-context.xml</param-value>
        </context-param>
        
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.jsp</welcome-file>
        <welcome-file>default.htm</welcome-file>
      </welcome-file-list>  
    </web-app>
    

    lib jar list

    antlr-2.7.7.jar
    aopalliance-1.0.jar
    aspectjrt-1.8.0.jar
    commons-logging-1.1.3.jar
    dom4j-1.6.1.jar
    hibernate-commons-annotations-4.0.4.Final.jar
    hibernate-core-4.3.5.Final.jar
    hibernate-entitymanager-4.3.5.Final.jar
    hibernate-jpa-2.1-api-1.0.0.Final.jar
    hsqldb-2.3.2.jar
    jandex-1.1.0.Final.jar
    javassist-3.18.1-GA.jar
    javax.servlet-api-3.1.0.jar
    javax.servlet.jsp.jstl-1.2.5.jar
    jboss-logging-3.1.3.GA.jar
    jboss-logging-annotations-1.2.0.Beta1.jar
    jboss-transaction-api_1.2_spec-1.0.0.Final.jar
    jcl-over-slf4j-1.7.7.jar
    jsp-api-2.1.jar
    jstl-api-1.2.jar
    serializer-2.7.2.jar
    servlet-api-2.5.jar
    slf4j-api-1.7.7.jar
    spring-aop-4.0.7.RELEASE.jar
    spring-beans-4.0.7.RELEASE.jar
    spring-context-4.0.7.RELEASE.jar
    spring-core-4.0.7.RELEASE.jar
    spring-data-commons-1.8.0.RELEASE.jar
    spring-data-jpa-1.6.0.RELEASE.jar
    spring-expression-4.0.7.RELEASE.jar
    spring-jdbc-4.0.7.RELEASE.jar
    spring-orm-4.0.7.RELEASE.jar
    spring-tx-4.0.7.RELEASE.jar
    spring-web-4.0.7.RELEASE.jar
    spring-webmvc-4.0.7.RELEASE.jar
    xalan-2.7.2.jar
    

    Eclipse export WAR

    export WAR = hello-t9-web.war

    Deploy to Tomcat 9

    put hello-t9-web.war to Tomcat9/webapps

    Start Tomcat 9

    Test

    Open "http://localhost:8080/hello-t9-web"

    Add user

    • input "aaa" then click button
    • input "bbb" then click button
    • input "ccc" then click button

    Delete User

    • Click link Delete User

    enter image description here

    TIPS

    Based on the information you provided, the only things I can help with are the following:

    You can jump directly to the following paragraph Jar List to see if you have the following files?

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.example</groupId>
        <artifactId>helloworldwebapp</artifactId>
        <packaging>war</packaging>
        <version>0.0.1-SNAPSHOT</version>
        <name>helloworld Maven Webapp</name>
        <properties>
            <maven.compiler.target>17</maven.compiler.target>
            <maven.compiler.source>17</maven.compiler.source>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-jpa</artifactId>
                <version>3.3.1</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>6.1.10</version>
            </dependency>
    
            <dependency>
                <groupId>jakarta.persistence</groupId>
                <artifactId>jakarta.persistence-api</artifactId>
                <version>3.2.0</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <finalName>helloworld</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.4.0</version>
                    <configuration>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    get all dependency jars

    mvn dependency:copy-dependencies -DoutputDirectory=target/libs
    

    dependency jars List

    target/libs
    ├── antlr4-runtime-4.13.0.jar
    ├── jakarta.annotation-api-2.0.0.jar
    ├── jakarta.persistence-api-3.2.0.jar
    ├── micrometer-commons-1.12.7.jar
    ├── micrometer-observation-1.12.7.jar
    ├── slf4j-api-2.0.2.jar
    ├── spring-aop-6.1.9.jar
    ├── spring-beans-6.1.9.jar
    ├── spring-context-6.1.9.jar
    ├── spring-core-6.1.9.jar
    ├── spring-data-commons-3.3.1.jar
    ├── spring-data-jpa-3.3.1.jar
    ├── spring-expression-6.1.9.jar
    ├── spring-jcl-6.1.9.jar
    ├── spring-jdbc-6.1.10.jar
    ├── spring-orm-6.1.10.jar
    └── spring-tx-6.1.9.jar
    

    Jar List

    • spring-orm-6.1.10.jar
    • jakarta.persistence-api-3.2.0.jar
    • spring-data-jpa-3.3.1.jar

    Now please check the jar file in the following list. Have you downloaded it?

    • antlr4-runtime-4.13.0.jar
    • jakarta.annotation-api-2.0.0.jar
    • micrometer-commons-1.12.7.jar
    • micrometer-observation-1.12.7.jar
    • slf4j-api-2.0.2.jar
    • spring-aop-6.1.9.jar
    • spring-beans-6.1.9.jar
    • spring-context-6.1.9.jar
    • spring-core-6.1.9.jar
    • spring-data-commons-3.3.1.jar
    • spring-expression-6.1.9.jar
    • spring-jcl-6.1.9.jar
    • spring-jdbc-6.1.10.jar
    • spring-tx-6.1.9.jar

    dependency-tree

    mvn dependency:tree
    
    +- org.springframework.data:spring-data-jpa:jar:3.3.1:compile
    |  +- org.springframework.data:spring-data-commons:jar:3.3.1:compile
    |  +- org.springframework:spring-context:jar:6.1.9:compile
    |  |  +- org.springframework:spring-expression:jar:6.1.9:compile
    |  |  \- io.micrometer:micrometer-observation:jar:1.12.7:compile
    |  |     \- io.micrometer:micrometer-commons:jar:1.12.7:compile
    |  +- org.springframework:spring-aop:jar:6.1.9:compile
    |  +- org.springframework:spring-tx:jar:6.1.9:compile
    |  +- org.springframework:spring-beans:jar:6.1.9:compile
    |  +- org.springframework:spring-core:jar:6.1.9:compile
    |  |  \- org.springframework:spring-jcl:jar:6.1.9:compile
    |  +- org.antlr:antlr4-runtime:jar:4.13.0:compile
    |  +- jakarta.annotation:jakarta.annotation-api:jar:2.0.0:compile
    |  \- org.slf4j:slf4j-api:jar:2.0.2:compile
    +- org.springframework:spring-orm:jar:6.1.10:compile
    |  \- org.springframework:spring-jdbc:jar:6.1.10:compile
    \- jakarta.persistence:jakarta.persistence-api:jar:3.2.0:compile
    

    It is recommended that :

    (1) you create an empty directory,

    (2) then generate a pom.xml (as I provided above),

    (3) and then execute the mvn dependency:copy-dependencies -DoutputDirectory=target/libs command,

    (4) you can obtain all dependent jar files in the target/libs directory at once , and then copy it to your webapp project.