我有一个使用spring framework 3.1.2版本构建的现有spring应用程序。我试图从这个现有的应用程序创建一个spring-boot应用程序,但得到一些依赖性问题。所以只是想知道spring-boot v 1.3.0支持的spring框架版本是什么。
换句话说,是否可以从基于Spring 3.1.2的应用程序获得spring-boot应用程序?
答案 0 :(得分:4)
Spring在Spring 4中对类有很强的依赖性,无法配置为使用Spring 3.如果你真的对使用Spring Boot感兴趣,唯一可以做到这一点的方法就是遵循Spring 4的迁移路径然后将Spring Boot添加到您的应用程序中。
值得一提的是" boot"在Spring Boot中,应用程序的初始设置与bootstrapping相关。我并不是说从Spring 4 vanilla迁移到Spring Boot没有任何好处。但是请确保您正在进行迁移,正确的原因是Spring Boot的主要目的是轻松引导应用程序,但这里还有其他一些可能值得采取行动的功能。
从3.1迁移到3.2
https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/migration-3.2.html
从Spring 3迁移到Spring 4。
https://spring.io/blog/2014/01/30/migrating-from-spring-framework-3-2-to-4-0-1
答案 1 :(得分:2)
Spring Boot中有许多功能依赖于添加到Spring 4的新功能。一个主要的例子是添加到Spring 4的新注释列表,允许条件接线/加载bean。这是以类似插件的方式布线配置的主要方法。
例如,让我们看一下H2控制台的AutoConfiguration类
我们首先看到的是它是一个Configuration类。只有在WebServlet.class位于类路径上并且属性spring.h2.console为= true时才会加载。它还配置为首先加载SecurityAutoConfiguration,因为这是一个依赖项,至少是为了保护h2控制台页面。
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass(WebServlet.class)
@ConditionalOnProperty(prefix = "spring.h2.console", name = "enabled", havingValue = "true", matchIfMissing = false)
@EnableConfigurationProperties(H2ConsoleProperties.class)
@AutoConfigureAfter(SecurityAutoConfiguration.class)
public class H2ConsoleAutoConfiguration {
当加载此配置时,它将检查这些条件,并且在所有条件都为真的情况下,然后它将加载到类中定义的bean中。在这种情况下,它连接h2console servlet。
@Bean
public ServletRegistrationBean h2Console() {
String path = this.properties.getPath();
String urlMapping = (path.endsWith("/") ? path + "*" : path + "/*");
return new ServletRegistrationBean(new WebServlet(), urlMapping);
}
该类中还有安全配置,它引入了另一个基于加载到上下文中的另一个类有条件地加载配置的概念。这些注释并不总是需要在配置级别上,但也可以应用于bean级别。
这些概念是Spring Boot如何实现的核心,因此无法与Spring 3一起使用。
Spring 3注释列表
http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/context/annotation/
Spring 4条件注释
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/
答案 2 :(得分:0)
感谢Zergleb发布详细答案。我找到了一种方法来运行spring 3 app作为一个独立的jar,创建了一个带有一点仪器的超级jar来引导spring通过java类。
在https://mihhaillapushkin.wordpress.com/2013/02/18/spring-3-for-standalone-applications
的短文中很好地解释了这一点