首页 > 其他分享 >Spring Boot:自定义SpringApplication

Spring Boot:自定义SpringApplication

时间:2022-11-09 19:05:32浏览次数:51  
标签:自定义 Spring args Boot SpringApplication springframework org import class


自定义SpringApplication

如果​​SpringApplication​​​的默认值不满足我们的需求,可以创建​​SpringApplication​​实例并对其进行自定义设置,例如,要关闭横幅:

package com.kaven.springboot;

import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(SpringbootApplication.class);
application.setBannerMode(Banner.Mode.OFF);
application.run(args);
}
}

Spring Boot:自定义SpringApplication_spring boot

​SpringApplication​​​是可用于从​​main​​​方法引导和启动​​Spring​​应用程序的类,默认情况下,该类将执行以下步骤来引导应用程序:

  • 创建一个适当的​​ApplicationContext​​实例。
  • 注册一个​​CommandLinePropertySource​​​以将命令行参数公开为​​Spring​​属性。
  • 刷新应用程序上下文,加载所有单例​​bean​​。
  • 触发所有​​CommandLineRunner bean​​。

在大多数情况下,可以直接在​​main​​​方法中调用静态​​run(Class, String[])​​方法来引导应用程序:

package com.kaven.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}

对于更高级的配置,可以在应用程序运行之前创建和自定义设置​​SpringApplication​​实例:

package com.kaven.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(SpringbootApplication.class);
// 配置SpringApplication实例
application.run(args);
}
}

​SpringApplication​​​可以从各种不同的源读取​​bean​​​,通常建议使用单个​​@Configuration​​​类(如​​Spring Boot​​​的启动类,即使用​​@SpringBootApplication​​​注解的类,​​@SpringBootApplication​​​注解组合了​​@EnableAutoConfiguration​​​、​​@ComponentScan​​​以及​​@SpringBootConfiguration​​等注解)来引导应用程序。

SpringApplication application = new SpringApplication(SpringbootApplication.class);

也可以通过以下内容来设置​​sources​​:

  • ​AnnotatedBeanDefinitionReader​​要加载的全限定类名。
  • ​XmlBeanDefinitionReader​​​要加载的​​XML​​​资源位置,或者​​GroovyBeanDefinitionReader​​​要加载的​​groovy​​脚本位置。
  • ​ClassPathBeanDefinitionScanner​​要扫描的包名称。

通过​​SpringApplication​​​类的​​setSources​​​方法来设置​​sources​​:

/**
* 设置用于创建ApplicationContext的其他源
* 源可以是:类名、包名或XML资源位置
*/
public void setSources(Set<String> sources) {
Assert.notNull(sources, "Sources must not be null");
this.sources = new LinkedHashSet<>(sources);
}

配置属性也会绑定到​​SpringApplication​​​,这使得动态设置​​SpringApplication​​属性成为可能。

Builder API

如果需要构建​​ApplicationContext​​​层次结构(具有父子关系的多个上下文),或者喜欢使用​​Builder API​​​,就可以使用​​SpringApplicationBuilder​​​。​​SpringApplicationBuilder​​允许将多个方法调用链接在一起,并包括父方法和子方法,用于创建层次结构。

​SpringApplication​​​和​​ApplicationContext​​​实例的构建器,具有方便的​​Builder API​​和上下文层次结构支持。上下文层次结构的简单示例:

new SpringApplicationBuilder(ParentConfig.class)
.child(ChildConfig.class)
.run(args);

另一个常见用例是设置激活配置文件和默认属性以设置应用程序的环境:

new SpringApplicationBuilder(Application.class)
.profiles("test")
.properties("password=itkaven")
.run(args);

如果需求很简单,使用​​SpringApplication​​​类中的静态方法即可。创建​​ApplicationContext​​​层次结构时有一些限制,例如,​​Web​​组件必须包含在子上下文中,并且父上下文和子上下文都使用相同的环境。

自定义​​SpringApplication​​就介绍到这里,如果博主有说错的地方或者大家有不同的见解,欢迎大家评论补充。


标签:自定义,Spring,args,Boot,SpringApplication,springframework,org,import,class
From: https://blog.51cto.com/u_15870611/5838288

相关文章

  • Spring Boot:热部署
    配置IDEA勾选​​Buildprojectautomatically​​选项。搜索​​Registry​​​(双击​​Shift​​​键),找到并勾选​​compiler.automake.allow.when.app.running​​选项。......
  • Spring Boot:替换Web服务器
    ​​SpringBoot​​​应用包含默认的嵌入式​​Web​​容器。对于​​servlet​​​应用,​​spring-boot-starter-web​​​通过依赖​​spring-boot-starter-tomcat​​​......
  • Spring Boot:HTTP端口
    在​​SpringBoot​​​应用程序中,​​HTTP​​​端口默认为​​8080​​。可以通过​​server.port​​​属性来设置,往配置文件​​application.properties​​中添加以......
  • 自定义的Qt仪表盘控件
    我做的仪表盘控件是个功能简单的显示控件。它默认的显示范围是[0,100],不能修改它的显示范围,因为不同的数值显示在前界面上的效果不同,可能导致显示重叠。成员函数只有一个s......
  • springBoot实现全局跨域
    importlombok.extern.slf4j.Slf4j;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.s......
  • spring boot 项目,使用 maven 构建工具打包的两种方法
    根据pom.xml文件指定的打包格式,打包成对于格式的包。如下:<packaging>war</packaging>使用IDEA的终端直接操作(或者cmd)。第一种方式:输入​​mvnpackage​​:打包成......
  • Spring Boot:The new driver class is com.mysql.cj.jdbc.Driver
    以前使用的是​​5.1.31​​​的​​mysql​​​驱动,后面使用​​SpringBoot​​​默认的​​mysql​​驱动,启动就报错了:Loadingclass`com.mysql.jdbc.Driver'.Thisis......
  • springmvc 整合 camunda
    参考官网:ProcessEngine配置|docs.camunda.org 一POM注意:1低版本c3p0会报错:Methodcom/mchange/v2/c3p0/impl/NewProxyResultSet.isClosed()Z千万记得要删除Ta......
  • 百度编辑器UEDITOR增加自定义工具栏暨百度编辑器上传WORD文档并保留源格式自动填充到
    ​如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-......
  • 自定义SpringMVC(仅用学习)
    自定义MVC有两大核心:1.AppListener程序一启动,监听器就会对程序进行监听,此时会去获取config从而找到controller路径(在使用web项目时,web.xml需要先配置config信息)、再通......