Springboot 帮助快速搭建java 应用程序,包括web和console 应用程序。 默认继承一般需要的依赖。 例如web应用会继承:tomcat-servlet, Jackson,oauth2,WebMvc等等。
四大功能:
通过@EnableAutoConfiguration 启用,检测用户可能需要的bean。 例如, 如果HSQLDB在classpath里面, 并且用户没有设置数据库链接, 很可能需要一个内存数据库,springBoot会重新指派一个
这里设置了大量的默认类,约定优于配置主要体现在这里
依赖集合。 spring 一站式依赖集合, 如spring-boot-starter-web,等。 在pom.xm 指定即可
命令行工具,用来编译和执行Groovy代码
程序监测, 使用它可以通过http,或者jmx 来审计,健康监测,以及指标收集。
自动配置自动监测
自动化测试
自动化测试自动配置
用来构建 single jar, 这样的jar 可以用java -jar 来启动。 一般不直接使用,而是通过maven 插件来达到同样的功能
SpringApplication 构造
这个推导方法有点意思:
private Class<?> deduceMainApplicationClass() {
try {
StackTraceElement[] stackTrace =
new RuntimeException().getStackTrace();
for (StackTraceElement stackTraceElement : stackTrace) {
if ("main".equals(stackTraceElement.getMethodName())) {
return
Class.forName(stackTraceElement.getClassName());
}
}
}
catch (ClassNotFoundException ex) {
// Swallow and continue
}
return null;
}
根据不同的context (servlet, reactiveWeb or standard)设置环境变量,
默认环境变量:
systemEnvironment | systemProperties | servletContextInitParams | servletConfigInitParams | jndiProperties | |
---|---|---|---|---|---|
servlet | 有 | 有 | 有 | 有 | 有 |
reactive web | 有 | 有 | |||
standard | 有 | 有 |
有三种ConfigurableApplicationContext:
非Web应用就是普通的consol程序。 关于 Servlet web 和 Reactive web 见另我一篇文章 spring boot中的web技术
环境变量包括 Profile, 系统环境变量,系统属性(SystemProperties)
设置beanDefinitionReader(xmlReader,annotationReader,groovyReader) 和
classpath beandefinition scanner, 以决定是通过xml 定义还是注解定义的bean.
程序都继承 AbstractApplicationContext,包括web程序
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。