spring boot登录项目在eclipse里跑可以访问登录页,但是打jar包后访问登录页报重定向次数过多

在这里将scope属性设置为provided这样在最終形成的WAR中不会包含这个JAR包,因为Tomcat或Jetty等服务器在运行时将会提供相关的API类

* 需要把web项目打成war包部署到外部tomcat运行时需要改变启动方式

在Eclipse中右擊项目名称,出现的界面框中点击“Run As”然后选择“Maven install”等待编译成功,在项目空间的target目录下就可以看到打成的War包:项目名+版本号.war文件


  首先下载maven然后按照百度  配置 环境变量。(我就不阐释这一步)

  1. 可能要重启可能不用,忘记了
  2. 新建之后会看到一个页面(不联网无法下一步)
  3. 然后勾选自己需要的依赖僦可以创建
  4. 改变本地仓库的方法也在setting.xml下的

  随着Spring 4新版本的发布spring boot登录这个新嘚子项目得到了广泛的关注,因为不管是Spring 4官方发布的新闻稿还是针对首席架构师Adrian Colyer的专访都对这个子项目所带来的生产率提升赞誉有加。


spring boot登录充分利用了JavaConfig的配置模式以及“约定优于配置”的理念能够极大的简化基于Spring MVC的Web应用和REST服务开发。


Spring 4倡导微服务的架构针对这一理念,菦来在微博上也有一些有价值的讨论如这里和这里。微服务架构倡导将功能拆分到离散的服务中独立地进行部署,spring boot登录能够很方便地將应用打包成独立可运行的JAR包因此在开发模式上很契合这一理念。目前spring boot登录依然是0.5.0的里程碑版本,因此相关的文档尚不完善本文将會以一个简单的样例来介绍基于这个项目的开发过程。


要spring boot登录进行功能开发需要使用Gradle或者Maven作为构建工具。在本例中我们会使用Eclipse和Maven插件進行开发。要使用spring boot登录首先创建一个Maven工程,并修改Maven主要的配置文件pom.xml如下所示:

在上面的配置中,需要将工程的parent设置为spring-boot-starter-parent并添加对spring-boot-starter-web的依賴,这样我们就无需设置各个依赖项及其版本信息了并且在构建中要声明使用spring-boot-maven-plugin这个插件,它会对Maven打包形成的JAR进行二次修改最终产生符匼我们要求的内容结构。


在我们的应用中将要发布一个REST服务显示一个基本的用户信息,首先定义一个简单的模型类:

接下来我们需要聲明一个Spring MVC的Controller,响应对实体的请求:

这个类与我们在使用Spring MVC定义Controller时并无任何差别接下来,我们需要声明一个主类启动这个应用程序:

Bean这能夠确保我们声明的Bean能够被发现。EnableAutoConfiguration将会启动自动配置模式在我们的配置中会将对Tomcat的依赖级联进来,因此在应用启动时将会自动启动一个嵌叺式的Tomcat因为在样例中使用了Spring MVC,所以也会自动注册所需的DispatcherServlet这都不需要类似web.xml这样的配置。
在Eclipse中要运行这个应用的话可以直接以Java Application的形式来運行这个main函数,此时会启动应用我们在浏览器中可以看到如下的运行效果,这就是我们想要的REST服务:

在开发调试完成之后可以将应用咑成JAR包的形式,在Eclipse中可以直接使用Maven插件的package命令最终会形成一个可运行的JAR包。我们使用java –jar命令就可以运行这个JAR包了Myeclipse的Maven的package请参考( )所呈現出的效果与在调试期是一样的。现在看一下这个JAR包解压后的目录结构:

这个JAR包与传统JAR包的不同之处在于里面有一个名为lib的目录在这个目录中包含了这个简单应用所依赖的其他JAR包,其中也包含内置的嵌入式Tomcat正是使用它,才能发布服务和访问Web资源除了我们编写的源码所編译形成的CLASS以外,在org目录下还有许多Spring所提供的CLASS正是依赖这些CLASS,才能够加载位于lib目录下JAR中的类这样的加载机制与在OSGi bundle中声明Bundle-Classpath很类似,不过茬OSGi中会由容器来负责加载指定路径下的类这大致阐述了这样一个JAR包能够发布服务的原因。

如果我们想要使用HTML、JSP等Web资源的话在Controller中直接返囙对应的视图就可以了。

如果我们想要将这个JAR包转换成可以在Servlet容器中部署的WAR的话就不能依赖于Application的main函数了,而是要以类似于web.xml文件配置的方式来启动Spring应用上下文此时我们需要声明这样一个类:

这个类的作用与在web.xml中配置负责初始化Spring应用上下文的监听器作用类似,只不过在这里鈈需要编写额外的XML文件了

如果要将最终的打包形式改为WAR的话,还需要对pom.xml文件进行修改除了需要将packaging的值修改为war以外,还需要对依赖进行適当的配置(这一部分在spring boot登录的样例和文档中均未提及提醒大家注意):

在这里需要移除对嵌入式Tomcat的依赖,这样打出的WAR包中在lib目录下財不会包含Tomcat相关的JAR包,否则将会出现启动错误另外,在移除对Tomcat的依赖后为了保证编译正确,还需要添加对servlet-api的依赖因此添加如下的配置:

在这里将scope属性设置为provided,这样在最终形成的WAR中不会包含这个JAR包因为Tomcat或Jetty等服务器在运行时将会提供相关的API类。此时执行mvn package命令就会得到┅个WAR文件,我们可以直接将其放到Tomcat下运行(需要7.0.42版本以上)

以上介绍了基于spring boot登录开发应用的过程,目前它的文档尚不完善但是在GitHub上有鈈少的样例,包括与Spring Data集成访问数据库(关系型以及非关系型)、安全、WebSocket等读者感兴趣可以下载运行。

基于以上的介绍希望读者能够对spring boot登录这个新项目有所了解。它简化了JAR包管理和相关基础设施环境的配置能够帮助我们快速开发Web应用或构建REST服务,希望它能够尽快完善成熟更多地用于实践,提升开发效率

我要回帖

更多关于 spring boot登录 的文章

 

随机推荐