spring boot中项目启动时,初始化方法加载参数

 今天我看到项目中用到了  @PostConstruct 这个注解,之前没看到过,特地查了一下,

1.@PostConstruct说明

     被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。

2.@PreDestroy说明

     被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。

 

可以看出来这个注解是用来项目启动时,进行加载参数的初始化参数的操作

然后我就总结了下springboot中几种项目启动时,可以初始化加载参数的方法。

第一种:注解@PostConstruct

项目启动之后,可以看到这行代码在项目启动的时候已经执行了

 

第二种:实现CommandLineRunner接口,@Order注解里面的参数是类执行的顺序,由小到大顺序

类中的输出语句都打印出来了

第三种:springboot的启动类,

最简单的方法,直接在springboot的启动类中加上需要初始化的类就行了~

 

 

 

 

Spring Boot 项目启动时,内容的加载顺序遵循特定的生命周期,主要分为以下几个阶段: 1. **初始化阶段**: - 加载主配置类(带有 `@SpringBootApplication` 注解的类),触发自动配置机制。 - 扫描项目中的组件(如 `@Component`、`@Service`、`@Repository`、`@Controller` 等),并将它们注册为 Spring 容器中的 Bean。 2. **环境准备阶段**: - 加载外部化配置(如 `application.properties` 或 `application.yml`),优先级从高到低依次为:命令行参数、`SPRING_APPLICATION_JSON` 环境变量、Java 系统属性、操作系统环境变量、随机值、应用外部配置文件、应用内部配置文件。 - 根据 `spring.profiles.active` 激活指定的 Profile,加载对应的配置文件(如 `application-dev.yml`)。 3. **Bean 定义加载阶段**: - 处理 `@Import` 注解引入的配置类。 - 解析 `@Bean` 方法,将方法返回的对象注册为 Bean。 - 执行 `BeanPostProcessor` 的初始化前逻辑(如 `@Autowired` 依赖注入)。 4. **容器刷新阶段**: - 调用 `ApplicationContext` 的 `refresh()` 方法,完成 Bean 的实例化、属性设置、初始化(执行 `InitializingBean.afterPropertiesSet()` 或 `@PostConstruct` 方法)。 - 触发 `ApplicationListener` 的事件通知(如 `ApplicationReadyEvent` 表示应用启动完成)。 5. **启动完成阶段**: - 执行 `CommandLineRunner` 或 `ApplicationRunner` 接口的实现类(用于在应用启动后执行自定义逻辑)。 - 输出启动日志(如 `Started YourApp in X seconds`)。 示例代码(通过 `ApplicationRunner` 打印启动日志): ```java @SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } } @Component public class StartupLogger implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("应用启动完成,参数:" + args.getOptionNames()); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值