GVKun编程网logo

向Spring Boot应用添加其他参数(springboot添加功能)

9

本文将介绍向SpringBoot应用添加其他参数的详细情况,特别是关于springboot添加功能的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于j

本文将介绍向Spring Boot应用添加其他参数的详细情况,特别是关于springboot添加功能的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于java – 在没有Spring Boot应用程序的情况下使用Spring Boot Actuator、Spring Boot 参考指南(开发你的第一个Spring Boot应用程序)、Spring Boot入门(10)利用Cloud Foundry Platform部署Spring Boot应用、Spring Boot应用程序中是否有多个Spring Data JPA模块(非Spring Boot)依赖项?的知识。

本文目录一览:

向Spring Boot应用添加其他参数(springboot添加功能)

向Spring Boot应用添加其他参数(springboot添加功能)

我想知道是否有可能添加spring的其他参数,例如在-Dspring.profiles.active=prod将其作为服务运行时添加到spring boot app 。

我检查了由spring-boot-maven-plugin以下命令自动生成的脚本:

command="$javaexe -jar -Dsun.misc.URLClassPath.disableJarChecking=true$jarfile $@"

所以也许可以通过maven插件的选项来完成,但是除了JVM参数之外,找不到任何其他有用的信息…

答案1

小编典典

我找不到任何解决方案,包括我所描述的解决方案-似乎插件的其他参数也不起作用。

最后,我通过使用systemd服务方法解决了该问题。

看起来像那样,完美地工作:

[Unit]Description=Some appAfter=syslog.target[Service]ExecStart=java -Dspring.profiles.active=production -jar /home/apps/monitoring-app-1.0.0.jar[Install]WantedBy=multi-user.target

java – 在没有Spring Boot应用程序的情况下使用Spring Boot Actuator

java – 在没有Spring Boot应用程序的情况下使用Spring Boot Actuator

具有生产信息端点的 Spring Boot的Actuator库对任何服务器应用程序都非常有用.但问题是我找不到集成到传统Spring应用程序(不是Spring BOOT应用程序)的方法.

必须有一些方法来使用执行器的端点,但我无法将它们连接起来.

我有一个JavaConfig类,如下所示

@Configuration
@ComponentScan(basePackages = { "com.company.helper","org.springframework.boot" })
@EnableWebMvc
@Import({ DbConfig.class })

public class AppConfig extends WebMvcConfigurerAdapter {

}

但是此配置在部署期间会引发错误.

没有Spring Boot应用程序可以完成这种连线吗?

解决方法

我在此博客文章中添加了有关如何在非启动应用程序中添加spring boot执行器的信息

http://givenwhenthen.blogspot.com/2015/09/adding-spring-boot-actuator-to-non.html

在应用程序的build.gradle中,我添加了以下依赖项

compile('org.springframework.boot:spring-boot-actuator:1.2.5.RELEASE'){
    exclude group: 'org.springframework.boot',module:'spring-boot-starter-logging'}

在应用程序的Spring Config类中,我添加了以下内容:

import org.springframework.beans.factory.annotation.Autowired;  
 import org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration;  
 import org.springframework.boot.actuate.endpoint.BeansEndpoint;  
 import org.springframework.boot.actuate.endpoint.HealthEndpoint;  
 import org.springframework.boot.actuate.endpoint.InfoEndpoint;  
 import org.springframework.boot.actuate.endpoint.RequestMappingEndpoint;  
 import org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping;  
 import org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter;  
 import org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint;  
 import org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint;  

 @Configuration  
 @Import(EndpointAutoConfiguration.class)  
 public class MyAppSpringConfig {  

   @Bean  
   @Autowired  
   //Define the HandlerMapping similar to RequestHandlerMapping to expose the endpoint  
   public EndpointHandlerMapping endpointHandlerMapping(  
     Collection<? extends MvcEndpoint> endpoints  
   ){  
     return new EndpointHandlerMapping(endpoints);  
   }  

   @Bean  
   @Autowired  
   //define the HealthPoint endpoint  
   public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate){  
     return new HealthMvcEndpoint(delegate,false);  
   }  

   @Bean  
   @Autowired  
   //define the Info endpoint  
   public EndpointMvcAdapter infoMvcEndPoint(InfoEndpoint delegate){  
      return new EndpointMvcAdapter(delegate);  
   }  

   @Bean  
   @Autowired  
   //define the beans endpoint  
   public EndpointMvcAdapter beansEndPoint(BeansEndpoint delegate){  
     return new EndpointMvcAdapter(delegate);  
   }  

   @Bean  
   @Autowired  
   //define the mappings endpoint  
   public EndpointMvcAdapter requestMappingEndPoint(  
     RequestMappingEndpoint delegate  
   ){  
     return new EndpointMvcAdapter(delegate);  
  }  
}

如果你想摆脱一个额外的依赖,那么请参阅博客帖子.

UPDATE

此外,您需要确保为RequestMappingHandlerAdapter定义了一个bean,如果您没有它,Servletdispatcher将无法为您的HealthMvcEndpoint的处理程序获取适配器.

如果你没有它只是将它添加到你的bean配置文件

xml配置:

<bean>
        <property name="messageConverters">
            <list>
                <ref bean="jsonConverter"/>
            </list>
        </property>
    </bean>

    <bean id="jsonConverter">
        <property name="supportedMediaTypes" value="application/json" />
        <property name="prettyPrint" value="true" />
    </bean>

Spring Boot 参考指南(开发你的第一个Spring Boot应用程序)

Spring Boot 参考指南(开发你的第一个Spring Boot应用程序)

11. 开发你的第一个Spring Boot应用程序

本节描述如何开发一个简单的“Hello World!” web应用程序来突出了Spring Boot的一些关键特性,我们使用Maven来构建这个项目,因为大多数IDE都支持它。

spring.io网站包含许多使用Spring Boot的“入门”指南,如果你需要解决一个具体的问题,先检查一下。
你可以通过使用start.spring.io和从依赖关系搜索器中选择“Web”启动器来快捷地完成以下步骤,这样做会生成一个新的项目结构,这样你就可以立即开始编写代码,查看Spring Initializr文档了解更多细节。

在开始之前,打开一个终端并运行以下命令,以确保安装了有效的Java和Maven版本:

$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_102, vendor: Oracle Corporation
此示例需要在其自己的文件夹中创建,随后的指令假设你已经创建了一个合适的文件夹,并且它是你当前的目录。

11.1 创建POM

我们需要先创建一个Maven pom.xml文件,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/xsd/maven-4.0.0.xsd">    
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId> <artifactId>myproject</artifactId>   
  <version>0.0.1-SNAPSHOT</version>
  <parent> 
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>    
    <version>2.0.5.RELEASE</version>
  </parent>
  <!-- Additional lines to be added here... -->
</project>

前面的清单应该给你一个工作构建,你可以通过运行mvn package来测试它(现在,你可以忽略“jar will be empty - no content was marked for inclusion!”的警告)。

此时,你可以将项目导入到IDE中(大多数现代Java IDE都包含对Maven的内置支持),为了简单起见,我们继续使用这个示例的纯文本编辑器。

11.2 添加类路径依赖

Spring Boot提供了一些“Starters”,可以让你将jar添加到类路径中,我们的示例应用程序已经在POM的父部分使用了spring-boot-starter-parentspring-boot-starter-parent是一个特殊的starter,它提供有用的Maven默认值,它还提供了一个dependency-management部分,以便你可以“幸福”的省略依赖项的version标记。

其他“Starters”提供了在开发特定类型的应用程序时可能需要的依赖项,由于我们正在开发一个web应用程序,所以我们添加了一个spring-boot-starter-web依赖项。在此之前,我们可以通过运行以下命令查看当前所拥有的内容:

$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree命令以树的形式打印项目依赖项,你可以看到spring-boot-starter-parent本身不提供依赖性,要添加必要的依赖项,请编辑pom.xml并将spring-boot-starter-web依赖项立即添加到parent部分下面:

<dependencies>
 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId> 
 </dependency>
</dependencies>

如果你再次运行mvn dependency:tree,你会看到现在有许多额外的依赖项,包括Tomcat web服务器和Spring Boot本身。

11.3 编写代码

要完成我们的应用程序,我们需要创建一个Java文件,默认情况下,Maven从src/main/java编译源代码,因此你需要创建该文件夹结构,然后添加一个名为src/main/java/Example.java的文件,包含以下代码:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*; 
import org.springframework.web.bind.annotation.*;

@RestController 
@EnableAutoConfiguration 
public class Example {
  @RequestMapping("/")
  String home() {
    return "Hello World!";
  }
  public static void main(String[] args) throws Exception {       
     SpringApplication.run(Example.class, args);
  }
}

虽然这里没有多少代码,但仍有很多工作要做,我们将在接下来的几节中讨论重要的部分。

11.3.1 @RestController和@RequestMapping注解

在我们的Example类上的第一个注解是@RestController,这被称为构造型注解,它为阅读代码的人们提供了一些提示,并且为Spring提供了一个特定的角色。在本例中,我们的类是一个web @Controller,所以Spring在处理传入web请求时考虑它。

@RequestMapping注解提供了“路由”信息,它告诉Spring,任何带有/路径的HTTP请求都应该映射到home方法,@RestController注解告诉Spring将生成的字符串直接呈现给调用者。

@RestController@RequestMapping注解是Spring MVC注解,(它们不是特定于Spring Boot的)有关更多详细信息,请参见Spring参考文档中的MVC部分。

11.3.2 @EnableAutoConfiguration注解

第二个类级别注解是@EnableAutoConfiguration,这个注解告诉Spring Boot基于你添加的jar依赖项“猜测”你想如何配置Spring,因为Spring-boot-starter-web添加了Tomcat和Spring MVC,所以自动配置假设你正在开发一个web应用程序,并相应地设置Spring。

Starters和自动配置

自动配置被设计成与“Starters”很好地工作,但是这两个概念并没有直接关联。你可以自由地挑选和选择除starters之外的jar依赖项,Spring Boot仍然尽力自动配置你的应用程序。

11.3.3 “Main”方法

我们的应用程序的最后一部分是main方法,这只是遵循应用程序入口点的Java约定的标准方法。我们的main方法通过调用run委托给Spring Boot的SpringApplication类,SpringApplication引导我们的应用程序启动Spring,而Spring又启动了自动配置的Tomcat web服务器。我们需要通过Example.class作为run方法的参数,以告诉SpringApplication它是主Spring组件,args数组也被传递,以公开任何命令行参数。

11.4 运行样例

此时,你的应用程序应该可以工作了,因为你使用了spring-boot-starter-parentPOM,所以你有一个有用的run目标,你可以使用它来启动应用程序。类型mvn spring-boot:run从根项目目录运行,以启动应用程序,你应该会看到类似如下的输出:

$ mvn spring-boot:run
  .   ____          _            __ _ _
 /\\ / ___''_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | ''_ | ''_| | ''_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  ''  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.0.5.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

如果你打开一个web浏览器到localhost:8080,你应该会看到以下输出:

Hello World!

要优雅地退出应用程序,按ctrl-c

11.5 创建一个可执行jar

我们通过创建一个可以在生产中运行的完全自包含的可执行jar文件来完成我们的示例,可执行jar(有时称为“fat jars”)是包含你的编译类的存档文件,以及你的代码需要运行的所有jar依赖项。

可执行jar和Java

Java没有提供加载嵌套jar文件的标准方法(jar文件本身包含在一个jar中)。
如果你希望分发一个自包含的应用程序,这可能会有问题。

为了解决这个问题,许多开发人员使用“uber”jar,一个uber jar将所有应用程序依赖项的所有类打包成一个归档文件,这种方法的问题在于,很难看到应用程序中有哪些库,如果在多个jar中使用相同的文件名(但使用不同的内容),也会有问题。

Spring Boot采用了一种不同的方法,让你可以直接嵌套jar。

要创建一个可执行jar,我们需要将spring-boot-maven-plugin添加到我们的pom.xml中,要做到这一点,请在dependencies部分下面插入以下几行:

<build>
 <plugins>
   <plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId>
  </plugin>
 </plugins>
</build>
spring-boot-starter-parentPOM包括<executions>配置以绑定repackage目标,如果你不使用父POM,你需要自己声明这个配置,有关详细信息,请参见插件文档。

保存你的pom.xml并从命令行运行mvn package,如下所示:

$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.5.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如果查看target目录,应该会看到myproject-0.0.1-snapshot.jar,文件的大小应该在10MB左右,如果你想查看内部,可以使用jar tvf,如下所示:

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

你还应该看到一个更小的文件,名为myproject-0.0.1-snapshot.jar.originaltarget目录中,这是Maven在Spring Boot重新打包之前创建的原始jar文件。

要运行该应用程序,请使用java -jar命令,如下所示:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
  .   ____          _            __ _ _
 /\\ / ___''_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | ''_ | ''_| | ''_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  ''  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.0.5.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

如前所述,退出应用程序,按ctrl-c

12.下一步要读什么

希望这一节提供了一些Spring Boot基础知识,并帮助你编写自己的应用程序。如果你是面向任务的开发人员,你可能想跳到spring.io和查看一些入门指南来解决具体的“我如何用Spring实现它?”的问题,我们还有Spring boot特有的“How-to”参考文档。

Spring Boot repository也有一些你可以运行的示例,这些示例与代码的其余部分无关(也就是说,你不需要构建其余的代码来运行或使用示例)。


上一篇:安装 Spring Boot
下一篇:构建系统

Spring Boot入门(10)利用Cloud Foundry Platform部署Spring Boot应用

Spring Boot入门(10)利用Cloud Foundry Platform部署Spring Boot应用

  CSDN的第100篇博客,值得纪念一下。在此说几句废话,希望读者谅解。
  近来烦心事较多,公司人员流动较大,喜欢的妹子也要离职了,我也想着是不是也该换份工作了。五月,心情烦躁,人事变动多,让我想起了“多事之秋”一词。出来工作不满一年,突然就体会到了各种无奈和离别,毕竟社会不好混呐~~虽然想着要换工作,心情也很down,但是学习的脚步不应该停下......
  第100篇博客,还是写Spring Boot, 挺不错的,但由于个人原因,Spring Boot的学习暂缓,接下来可能会写点TensorFlow方面的博客。
  好了,说正事。
  在前面的九篇关于Spring Boot的博客中,我们主要讲了Spring Boot在Web方面的应用,那么,一个很自然的想法就是,能不能把自己的Web应用部署到服务器上,让别人也能看到自己的项目呢?
  部署,是开发的最后一步,也是较难的一步,对于笔者这种新手来说,要用Apache或者Nginx来部署,得学一段时间才能学会,而且感觉学习曲线比较陡峭。那么,采用云服务器呢?一般云服务器都提供了很好的服务,如阿里云等,但唯一的缺点就是:收费。
  我们部署Spring Boot的方法是: 利用Cloud Foundry Platform. 这样做的好处是:云服务,部署简单,而且有2G的免费内存,对于新手来说,足够使用了。
  关于Cloud Foundry的介绍,可以参考网址: https://en.wikipedia.org/wiki... .
  接下来,我们讲述如何利用Cloud Foundry Platform部署Spring Boot应用,步骤如下:

  1. 安装CF Windows installer,网址为: https://cli.run.pivotal.io/st...
  2. 注册Pivotal账号,网址为: https://account.run.pivotal.i...
  3. 部署Spring Boot应用

安装CF Windows installer

  在https://cli.run.pivotal.io/st... Windows installer, 这是Windows的版本。下载完后,解压,双击cf_installer.exe,然后一路按“next”即可完成安装。
  验证是否安装成功,只需要在CMD中输入cf,如出现以下界面,即说明安装成功.

验证是否安装成功

注册Pivotal账号

  打开网址:https://account.run.pivotal.i..., 利用自己的邮箱即可注册Pivotal账号,别忘了回自己的邮箱完成验证。
  注册完了,你就有一个Pivotal账号了,为了能把本地的项目上传到服务器,你需要在本地完成登录。在CMD中输入cf login -a api.run.pivotal.io, 然后输入你刚才注册的账号及密码即可。这样,我们就能部署本地项目了。

本地端登录

部署Spring Boot项目

  选择自己要部署的Spring Boot项目,生成该项目的jar包。我们示例的Spring Boot项目为Josepus问题的网页版,Github地位为:https://github.com/percent4/j...。因此,本篇博客可能是唯一未出现代码的博客,哈哈~~
  Josephus项目采用Gradle编译,生成josephus-0.1.0.jar包,然后在CMD中切换到该jar包所在文件夹,然后输入命令:

cf push josephus -p josephus-0.1.0.jar

该命令利用cf上传(push)josephus-0.1.0.jar,部署的网址主体为josephus,这样我们就完成了该项目的部署。什么,这么简单就完成部署了?是的,你没看错,就这么简单。
  可以登录Pivotal网站,进入Pivotal Web Services,查看项目的运行情况:

查看项目的运行

可以看到我们刚才部署的Josephus项目已经部署在https://josephus.cfapps.io/ 上了。我们部署项目成功啦!

运行及测试

  部署完项目后,别忘了测试一把。因为我们部署的Josephus项目的有响应的网站映射,所以我们需要在浏览器中输入:https://josephus.cfapps.io/Jo... 才能使用该Web应用。

部署测试

可以看到我们的网址不再是localhost了,而且cfapps.io,这说明我们在云服务器中成功部署了,也意味着别人只要输入这个网址,就能访问你的项目了!
  在以上网页中,输入n=10,m=3,按下“Show Resule”按钮,显示如下:

显示结果

  这就是一个完整的Web App的诞生!

  关于Spring Boot, 暂时就到这儿了。希望能对读者有所帮助,也祝自己能顺利地换份工作~~

Spring Boot应用程序中是否有多个Spring Data JPA模块(非Spring Boot)依赖项?

Spring Boot应用程序中是否有多个Spring Data JPA模块(非Spring Boot)依赖项?

否,使用<scope>provided</scope>是不正确的。

正如Maven documentation所说:

提供
这很像compile,但表示您希望 JDK或容器在运行时提供依赖项。例如,在为Java Enterprise Edition构建Web应用程序时,您将对Servlet API和相关Java EE API的依赖性设置为范围provided,因为Web容器提供了这些类。具有此作用域的依赖项将添加到用于编译和测试的类路径中,而不是运行时类路径中。它不是可传递的。

用另一种方式说,它是由运行时“提供”在部署程序集之外的。

如果在打包要部署的代码时必须包含依赖项,那么您肯定不希望它对您provided有用。

请记住,您的库需要告诉依赖于您的库的构建系统,它需要包括其他库以及您的库的内容。这就是传递依赖的全部目的,因此,通过不使spring-data-jpa成为传递依赖,您就做错了。

今天的关于向Spring Boot应用添加其他参数springboot添加功能的分享已经结束,谢谢您的关注,如果想了解更多关于java – 在没有Spring Boot应用程序的情况下使用Spring Boot Actuator、Spring Boot 参考指南(开发你的第一个Spring Boot应用程序)、Spring Boot入门(10)利用Cloud Foundry Platform部署Spring Boot应用、Spring Boot应用程序中是否有多个Spring Data JPA模块(非Spring Boot)依赖项?的相关知识,请在本站进行查询。

本文标签: