Fork me on GitHub

SpringBoot原理分析 - 自动装配

SpringBoot解决了spring以及springmvc繁琐的配置的痛点,以“约定大于配置”为原则,实现了自动装配。下面来探究下SpringBoot自动装配原理。 一、何为装配把bean放入到Spring的Ioc容器叫做装配,那么在装配Bean的时候,我们首先要知道哪些类需要被装配,实现这一方式的途径总体上说分为两种,一种是传统的xml方式,另一种则是注解方式。下面介绍下通过注解来实现装...

SpringBoot之Tomcat自动配置

准备工作我们知道SpringBoot的自动装配的秘密在org.springframework.boot.autoconfigure包下的spring.factories文件中,而嵌入Tomcat的原理就在这个文件中加载的一个配置类:org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoCon...

SpringBoot健康检查实现原理

SpringBoot自动装配的套路,直接看spring.factories文件,当我们使用的时候只需要引入如下依赖 1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactI...

SpringBoot源码解析创建SpringApplication对象实例

上篇文章中的main方法来分析SpringApplication这个类 123456@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.cla...

SpringBoot到底run了什么

我们详细描述了SpringApplication对象实例的创建过程,本篇文章继续看run方法的执行逻辑吧 123456789101112131415public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start()...

Java项目启动时执行指定方法的几种方式

很多时候我们都会碰到需要在程序启动时去执行的方法,比如说去读取某个配置,预加载缓存,定时任务的初始化等。这里给出几种解决方案供大家参考。 1. 使用@PostConstruct注解 这个注解呢,可以在Spring加载这个类的时候执行一次。来看一下下方代码。 1234567891011121314151617181920@Componentpublic class Test {...

SpringBoot配置logback-spring

几种常见的日志 Log4j:是最早的日志框架,是apach旗下的,可以单独使用,也可配合日志框架JCL使用; Log4j2:apach旗下的关于log4j的升级版; Logback:是基于slf4j接口实现的一套日志框架组件;(Logback是由log4j创始人设计的又一个开源日志组件。) JUL(java utillog):仿log4j实现的日志框架,是sun旗下的,(也就是在我们普遍使用...

SpringBoot源码系列

SpringBoot源码SpringBoot到底run了什么 SpringBoot源码解析创建SpringApplication对象实例 SpringBoot健康检查实现原理 SpringBoot之Tomcat自动配置 SpringBoot原理分析 - 自动装配

Spring Boot Bean definition overriding

在本文中,我将讨论棘手的Spring Boot bean定义覆盖机制。 为了使您对该主题更加清楚,让我们从小测验开始。请看下一个简单的例子。 因此,我们有2种配置,它们使用名称beanName实例化bean,在主应用程序中,我们仅打印该bean的值(非常重要的是,它们都具有相同的名称)。 那么您认为将要印刷什么? 示例1123456789101112131415161718192021222...

Spring Boot Admin2.X监控的服务context-path问题

Spring Boot Admin2.X监控的服务context-path问题

在使用Spring Boot Admin进行监控时,如果被监控的服务没有加context-path的话是不会有任何问题的,一旦服务加了context-path的配置,监控就会失败。 下图是正常情况的显示: 我们给被监控的服务增加一个context-path: 1server.servlet.context-path=/yinjihuan 当被监控的服务增加了context-path之后,...