将Spring Boot与现有的Spring应用程序集成

GD_Java

我是Spring Boot的新手。我浏览了文档和一些教程。从他们那里我了解到,Spring Boot使开发变得容易。Spring Boot使得创建独立的,基于生产级别的基于Spring的应用程序变得容易,您可以“运行”它们。直到教程还好。

但是,假设您已经有一个应用程序(SpringMVC + Hibernate + MySql),我可以在该应用程序中利用Spring Boot吗?为了弄清楚答案,我决定将Spring Boot集成到一个项目中。我从http://www.journaldev.com/3531/spring-mvc-hibernate-mysql-integration-crud-example-tutorial下载了示例工作代码,并尝试集成Spring Boot。我无法使它正常工作。我在例外之下。

Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : org.springframework.boot.logging.ClasspathLoggingApplicationListener
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:414)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:394)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:385)
at org.springframework.boot.SpringApplication.initialize(SpringApplication.java:263)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:237)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180)
at com.journaldev.spring.Application.main(Application.java:14)

Caused by: java.lang.NoClassDefFoundError: 
org/springframework/context/event/GenericApplicationListener

现在我完全困惑了。我得到的印象是Spring Boot无法集成在上述类型的应用程序上。您需要从头开始开发应用程序。不确定我是否正确。请解释一下我如何在已经开发的Spring应用程序中利用Spring Boot的优势?

下面是pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.journaldev.spring</groupId>
<artifactId>SpringMVCHibernate</artifactId>
<name>SpringMVCHibernate</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
    <java-version>1.6</java-version>
    <org.springframework-version>4.0.3.RELEASE</org.springframework-version>
    <org.aspectj-version>1.7.4</org.aspectj-version>
    <org.slf4j-version>1.7.5</org.slf4j-version>
    <hibernate.version>4.3.5.Final</hibernate.version>
</properties>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework-version}</version>
        <exclusions>
            <!-- Exclude Commons Logging in favor of SLF4j -->
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
             </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

    <!-- Apache Commons DBCP -->
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>
    <!-- Spring ORM -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>

    <!-- AspectJ -->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${org.aspectj-version}</version>
    </dependency>   

    <!-- Logging -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${org.slf4j-version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${org.slf4j-version}</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${org.slf4j-version}</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.15</version>
        <exclusions>
            <exclusion>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.jms</groupId>
                <artifactId>jms</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jdmk</groupId>
                <artifactId>jmxtools</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jmx</groupId>
                <artifactId>jmxri</artifactId>
            </exclusion>
        </exclusions>
        <scope>runtime</scope>
    </dependency>

    <!-- @Inject -->
    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>

    <!-- Servlet -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <!-- Test -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.7</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>

</dependencies>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.9</version>
            <configuration>
                <additionalProjectnatures>
                    <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                </additionalProjectnatures>
                <additionalBuildcommands>
                    <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                </additionalBuildcommands>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <compilerArgument>-Xlint:all</compilerArgument>
                <showWarnings>true</showWarnings>
                <showDeprecation>true</showDeprecation>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <configuration>
                <mainClass>org.test.int1.Main</mainClass>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    <finalName>${project.artifactId}</finalName>
</build>
</project>
维纳·韦鲁里
Caused by: java.lang.NoClassDefFoundError: 
org/springframework/context/event/GenericApplicationListener

由于上述错误,应用程序无法从jar依赖项中找到定义的类。GenericApplicationListener是从春季版本4.2AFAIK添加的

<org.springframework-version>4.0.3.RELEASE</org.springframework-version>

将您的春季版本升级到>4.2并重新检查。

这是去的路dependency managementSpring-boot轻松进行。这是Spring Boot文档所说的内容。

  • 提供自以为是的“入门” POM,以简化您的Maven配置
  • 尽可能自动配置Spring

除了按照要求添加特定于数据库供应商的jar外,我们不必担心依赖项。

API

我得到的印象是Spring Boot无法集成在上述类型的应用程序上。您需要从头开始开发应用程序。

不,当我们拥有Maven配置时,一切都与更改根pom及其依赖关系有关。它全部与依赖抽象有关。从根级别构建应用程序无疑很容易,但是通过遵循maven的原理,我们甚至可以使现有应用程序遵循spring-boot。

请解释一下我如何在已经开发的Spring应用程序中利用Spring Boot的优势?

研究这些依赖性,分析其根POM。它们为我们提供了您在常规应用程序中添加的所有依赖项。在某种程度上可以帮助我们进行构建配置以及更多样板依赖。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

除了上述以外,

  • 在Maven中育儿是什么
  • 如何更改子Pom中的版本

将帮助您自定义应用程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将 Angular 4 与现有的基于 Spring Boot jsp 的 Web 应用程序集成?

来自分类Dev

将现有的Spring应用程序转换为Spring-Boot

来自分类Dev

如何在现有的spring-mvc应用程序中集成spring-integration?

来自分类Dev

将spring-reactor集成到现有的Spring Framework 4 STOMP Over WebSocket应用程序中

来自分类Dev

将spring-reactor集成到现有的Spring Framework 4 STOMP Over WebSocket应用程序中

来自分类Dev

将基于令牌的安全性集成到现有的Spring Security Web应用程序中

来自分类Dev

在 Google App Engine 上部署现有的 Spring Boot 应用程序

来自分类Dev

将Play 2框架与现有Spring MVC应用程序3.1集成

来自分类Dev

将react-redux集成到现有的Angularjs应用程序中

来自分类Dev

将react-redux集成到现有的Angularjs应用程序中

来自分类Dev

将炼油厂cms集成到现有的Rails应用程序中

来自分类Dev

如何将现有的angular js应用程序集成到Laravel 5中

来自分类Dev

如何将新的 ionic 主题集成到现有的 ionic 应用程序中?

来自分类Dev

将spring-batch-admin集成到现有的Spring Boot后无法导入属性

来自分类Dev

无法将现有的 spring boot gradle 应用程序导入 eclispe(版本:Mars Release (4.5.0) Build id:20150621-1200)?

来自分类Dev

在 Spring Cloud Data Flow 中部署现有的 Spring Cloud Stream 应用程序

来自分类Dev

为现有的Spring MVC应用程序(Spring Mobile或Phonegap)设计一个移动应用程序

来自分类Dev

Spring Boot:我们可以在现有的Spring MVC应用程序中使用反应式Webfilter吗?

来自分类Dev

向现有的Spring应用程序添加Web套接字支持

来自分类Dev

如何将新的Qt窗口与现有的X应用程序集成在一起?

来自分类Dev

IBM Worklight-如何将Worklight功能集成到现有的本机应用程序中?

来自分类Dev

如何将 React 与非平凡的 AngularJS 应用程序和现有的 grunt 配置集成?

来自分类Dev

将现有的Django应用程序导入Pycharm

来自分类Dev

如何将现有应用程序与 Joomla 集成?

来自分类Dev

spring boot jpa在视图中打开false。如何将现有应用程序转换为不使用OSIV?

来自分类Dev

Swagger 2与Spring Boot应用程序集成

来自分类Dev

Spring Boot中多战应用程序的集成测试

来自分类Dev

wso2 集成 Spring Boot 应用程序

来自分类Dev

如何将React Native应用程序与Spring Boot Oauth2集成

Related 相关文章

  1. 1

    如何将 Angular 4 与现有的基于 Spring Boot jsp 的 Web 应用程序集成?

  2. 2

    将现有的Spring应用程序转换为Spring-Boot

  3. 3

    如何在现有的spring-mvc应用程序中集成spring-integration?

  4. 4

    将spring-reactor集成到现有的Spring Framework 4 STOMP Over WebSocket应用程序中

  5. 5

    将spring-reactor集成到现有的Spring Framework 4 STOMP Over WebSocket应用程序中

  6. 6

    将基于令牌的安全性集成到现有的Spring Security Web应用程序中

  7. 7

    在 Google App Engine 上部署现有的 Spring Boot 应用程序

  8. 8

    将Play 2框架与现有Spring MVC应用程序3.1集成

  9. 9

    将react-redux集成到现有的Angularjs应用程序中

  10. 10

    将react-redux集成到现有的Angularjs应用程序中

  11. 11

    将炼油厂cms集成到现有的Rails应用程序中

  12. 12

    如何将现有的angular js应用程序集成到Laravel 5中

  13. 13

    如何将新的 ionic 主题集成到现有的 ionic 应用程序中?

  14. 14

    将spring-batch-admin集成到现有的Spring Boot后无法导入属性

  15. 15

    无法将现有的 spring boot gradle 应用程序导入 eclispe(版本:Mars Release (4.5.0) Build id:20150621-1200)?

  16. 16

    在 Spring Cloud Data Flow 中部署现有的 Spring Cloud Stream 应用程序

  17. 17

    为现有的Spring MVC应用程序(Spring Mobile或Phonegap)设计一个移动应用程序

  18. 18

    Spring Boot:我们可以在现有的Spring MVC应用程序中使用反应式Webfilter吗?

  19. 19

    向现有的Spring应用程序添加Web套接字支持

  20. 20

    如何将新的Qt窗口与现有的X应用程序集成在一起?

  21. 21

    IBM Worklight-如何将Worklight功能集成到现有的本机应用程序中?

  22. 22

    如何将 React 与非平凡的 AngularJS 应用程序和现有的 grunt 配置集成?

  23. 23

    将现有的Django应用程序导入Pycharm

  24. 24

    如何将现有应用程序与 Joomla 集成?

  25. 25

    spring boot jpa在视图中打开false。如何将现有应用程序转换为不使用OSIV?

  26. 26

    Swagger 2与Spring Boot应用程序集成

  27. 27

    Spring Boot中多战应用程序的集成测试

  28. 28

    wso2 集成 Spring Boot 应用程序

  29. 29

    如何将React Native应用程序与Spring Boot Oauth2集成

热门标签

归档