当前位置: 首页 > news >正文

网站制作公司dedecms网页开发

网站制作公司dedecms,网页开发,如何做一个单页面的网站,wordpress微信编辑器在 Spring Boot 中,初始化方法通常是在应用程序启动时被调用的,可以用来执行应用启动时的一些准备工作。以下是几种常见的初始化方法: 一、顺序 1. 图解 ┌─────────────────────────────┐│ Spring Boot…

在 Spring Boot 中,初始化方法通常是在应用程序启动时被调用的,可以用来执行应用启动时的一些准备工作。以下是几种常见的初始化方法:

一、顺序

1. 图解

                ┌─────────────────────────────┐│    Spring Boot启动           │└─────────────────────────────┘│▼┌─────────────────────────────┐│     Spring Application      ││    Context 加载和注入         │└─────────────────────────────┘│▼┌─────────────────────────────┐│     依赖注入完成              ││       (`@PostConstruct`)    │└─────────────────────────────┘│▼┌─────────────────────────────┐│      `InitializingBean`     ││   调用 `afterPropertiesSet()`│└─────────────────────────────┘│▼┌─────────────────────────────┐│      初始化 `@Bean`          ││    (配置类中 `@Bean` 方法)    │└─────────────────────────────┘│▼┌─────────────────────────────┐│   `CommandLineRunner`       ││   和 `ApplicationRunner`    │└─────────────────────────────┘│▼┌─────────────────────────────┐│   触发应用事件                ││   (`ApplicationListener`)   │└─────────────────────────────┘│▼┌─────────────────────────────┐│     应用启动完成              ││  (`ApplicationReadyEvent`)  │└─────────────────────────────┘

2. 执行顺序过程

  1. Spring Boot 启动 (SpringApplication.run())
    这是应用启动的入口,它会初始化 Spring 上下文,加载所有 Bean 配置等。

  2. 依赖注入完成后 (@PostConstruct / InitializingBean)
    @PostConstruct 在所有依赖注入完成后立即执行,用于执行一些初始化工作。
    InitializingBean 的 afterPropertiesSet() 方法也在所有依赖注入完成后执行,通常用于进行一些逻辑初始化。

  3. 初始化 @Bean 方法
    Spring 会在容器启动过程中调用配置类中的 @Bean 方法进行 Bean 初始化。这些方法通常用于返回一些 Spring 管理的 Bean。

  4. CommandLineRunner 和 ApplicationRunner 执行
    这些接口的 run() 方法会在 Spring Boot 完全初始化后执行,通常用于执行一些在应用启动完成后的操作。

  5. ApplicationListener 监听器触发
    ApplicationListener 可以监听 ApplicationReadyEvent 事件等,这个事件会在应用完全启动并准备就绪后触发。

  6. 应用启动完成 (ApplicationReadyEvent)
    当应用启动并准备好后,ApplicationReadyEvent 会被触发。此时,应用就可以接受请求或执行其他操作了。

二、方法详解

1. @PostConstruct 注解

@PostConstruct 注解用于标注一个方法,表示在 Spring 完成所有依赖注入后,会调用该方法。这通常用于类初始化时执行的操作。

@Component
public class MyService {@PostConstructpublic void init() {System.out.println("Initializing MyService...");}
}

2. CommandLineRunner 接口

CommandLineRunner 是 Spring Boot 提供的一个接口,它的 run 方法会在应用启动完成后执行。CommandLineRunner 接口允许开发者在应用启动时执行一些特定的逻辑。

@SpringBootApplication
public class MyApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}@Overridepublic void run(String... args) throws Exception {System.out.println("Application started with CommandLineRunner...");}
}

3. ApplicationRunner 接口

ApplicationRunner 接口与 CommandLineRunner 类似,区别在于它提供了一个 ApplicationArguments 参数,可以获取启动时传入的命令行参数。

@SpringBootApplication
public class MyApplication implements ApplicationRunner {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("Application started with ApplicationRunner...");System.out.println("Non-option arguments: " + args.getNonOptionArgs());}
}

4. SpringApplication 类的 run() 方法

Spring Boot 的 SpringApplication 类的 run() 方法是应用启动的入口,它可以配置一些初始化行为,如设置应用的环境、启用配置文件等。

public static void main(String[] args) {SpringApplication app = new SpringApplication(MyApplication.class);app.setAdditionalProfiles("dev");app.run(args);
}

5. @Configuration 配置类中的 @Bean 方法

在配置类中,通过 @Bean 注解定义的 Bean 方法,会在应用启动时被执行。

@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyService();}
}

6. ApplicationListener 监听器

ApplicationListener 可以监听 Spring Boot 应用的启动事件,例如 ContextRefreshedEventApplicationReadyEvent,这些事件可以用于执行初始化逻辑。

@Component
public class AppStartupListener implements ApplicationListener<ApplicationReadyEvent> {@Overridepublic void onApplicationEvent(ApplicationReadyEvent event) {System.out.println("Application is ready!");}
}

7. @Bean 注解与 @PostConstruct 配合

如果你在 Spring 配置类中使用 @Bean 注解创建一个 Bean,并且需要在该 Bean 被创建后进行一些初始化操作,可以将 @PostConstruct 注解添加到 Bean 类中的初始化方法。

@Configuration
public class MyConfig {@Beanpublic MyService myService() {return new MyService();}@PostConstructpublic void setup() {System.out.println("Initializing configuration...");}
}

8. InitializingBean 接口

InitializingBean 是 Spring 提供的一个接口,允许开发者在 Bean 被初始化之后执行特定的操作。这个接口与 @PostConstruct 注解有些类似,但 InitializingBean 是一个更传统的方式,适用于较早的 Spring 版本,而 @PostConstruct 是 Java EE 标准的一部分。InitializingBean 接口的主要方法是 afterPropertiesSet(),它会在 Spring 容器完成依赖注入并且所有 Bean 属性都设置好之后执行。也就是说,afterPropertiesSet() 方法在 Bean 初始化时被调用,通常用于执行一些与 Bean 相关的初始化工作。

import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;@Component
public class MyService implements InitializingBean {@Overridepublic void afterPropertiesSet() throws Exception {// 执行初始化操作System.out.println("MyService has been initialized!");}
}

执行顺序

在 Spring 中,InitializingBeanafterPropertiesSet() 方法的调用顺序如下:

  1. 依赖注入完成后:Spring 完成对所有 Bean 的依赖注入,确保所有的属性都被正确设置。
  2. InitializingBeanafterPropertiesSet() 被调用:Spring 会依次调用实现了 InitializingBean 接口的 Bean 的 afterPropertiesSet() 方法。
  3. @PostConstruct 注解方法被调用:如果 @PostConstruct 方法存在,它将在 afterPropertiesSet() 后调用。

InitializingBean@PostConstruct 的区别

特性InitializingBean@PostConstruct
接口/注解接口 (InitializingBean)注解 (@PostConstruct)
调用时机在依赖注入完成之后调用 (afterPropertiesSet())在依赖注入完成之后调用(容器初始化后,通常早于 afterPropertiesSet()
使用范围需要实现 InitializingBean 接口可以标注在任何一个方法上
适用场景适用于老版本的 Spring 或者需要控制初始化逻辑的情况适用于更简洁的场景,推荐用于标注简单初始化方法
@Bean 配合可以与配置类中的 @Bean 配合,调用 afterPropertiesSet()一般情况下,@PostConstruct 用于实例化 Bean 时的初始化方法

文章转载自:
http://dinncoaerodonetics.bkqw.cn
http://dinncosoberano.bkqw.cn
http://dinncodiscerptible.bkqw.cn
http://dinncooutside.bkqw.cn
http://dinncograndaunt.bkqw.cn
http://dinncocringle.bkqw.cn
http://dinncotrichomonad.bkqw.cn
http://dinncointercellular.bkqw.cn
http://dinncoethnohistoric.bkqw.cn
http://dinncodottle.bkqw.cn
http://dinncowean.bkqw.cn
http://dinncocarbonium.bkqw.cn
http://dinncovilification.bkqw.cn
http://dinncosistroid.bkqw.cn
http://dinncowitting.bkqw.cn
http://dinncocitizeness.bkqw.cn
http://dinncomajuscule.bkqw.cn
http://dinnconongraduate.bkqw.cn
http://dinncopolychromy.bkqw.cn
http://dinncobeggarliness.bkqw.cn
http://dinncogalvanic.bkqw.cn
http://dinncoslaggy.bkqw.cn
http://dinncoailanthus.bkqw.cn
http://dinncopuncture.bkqw.cn
http://dinncopesade.bkqw.cn
http://dinncohypoeutectic.bkqw.cn
http://dinncoemendable.bkqw.cn
http://dinncoarmadillo.bkqw.cn
http://dinncocolligational.bkqw.cn
http://dinnconepalese.bkqw.cn
http://dinncohydromedusa.bkqw.cn
http://dinncokeypad.bkqw.cn
http://dinncostatehouse.bkqw.cn
http://dinncoeyedropper.bkqw.cn
http://dinncotrirectangular.bkqw.cn
http://dinncoaethereally.bkqw.cn
http://dinncosouther.bkqw.cn
http://dinncotrackable.bkqw.cn
http://dinncopostwar.bkqw.cn
http://dinncodeary.bkqw.cn
http://dinncoparaplasm.bkqw.cn
http://dinncoreadability.bkqw.cn
http://dinncobeseech.bkqw.cn
http://dinncotransship.bkqw.cn
http://dinncoumber.bkqw.cn
http://dinncoamass.bkqw.cn
http://dinncocentuplicate.bkqw.cn
http://dinncoteleplasm.bkqw.cn
http://dinncogeneratrix.bkqw.cn
http://dinncodemigod.bkqw.cn
http://dinncotoffy.bkqw.cn
http://dinncofencelessness.bkqw.cn
http://dinncoplausible.bkqw.cn
http://dinncotamber.bkqw.cn
http://dinncoherniation.bkqw.cn
http://dinncosomewhile.bkqw.cn
http://dinncogastraea.bkqw.cn
http://dinncodisulfate.bkqw.cn
http://dinncolinaceous.bkqw.cn
http://dinncosacroiliac.bkqw.cn
http://dinncobotryoidal.bkqw.cn
http://dinncoaccusal.bkqw.cn
http://dinncodeclot.bkqw.cn
http://dinncohydraulic.bkqw.cn
http://dinncobanting.bkqw.cn
http://dinncosabah.bkqw.cn
http://dinncospifflicate.bkqw.cn
http://dinncosubmicrogram.bkqw.cn
http://dinncodisrobe.bkqw.cn
http://dinncooopm.bkqw.cn
http://dinnconaysaid.bkqw.cn
http://dinncosnowy.bkqw.cn
http://dinncodrawshave.bkqw.cn
http://dinncoreprehensibly.bkqw.cn
http://dinncounemotional.bkqw.cn
http://dinnconom.bkqw.cn
http://dinncoconstringency.bkqw.cn
http://dinncotollbooth.bkqw.cn
http://dinncosanctitude.bkqw.cn
http://dinncoconcertina.bkqw.cn
http://dinncoinbred.bkqw.cn
http://dinncodipode.bkqw.cn
http://dinncochromaticity.bkqw.cn
http://dinncoelectromeric.bkqw.cn
http://dinncowristlock.bkqw.cn
http://dinnconeuroma.bkqw.cn
http://dinncomorcha.bkqw.cn
http://dinncosemipornographic.bkqw.cn
http://dinncoduniewassal.bkqw.cn
http://dinncominus.bkqw.cn
http://dinncococoon.bkqw.cn
http://dinncoprotocol.bkqw.cn
http://dinncocoparcener.bkqw.cn
http://dinncomegajet.bkqw.cn
http://dinncofakement.bkqw.cn
http://dinncobenzosulphimide.bkqw.cn
http://dinncocemental.bkqw.cn
http://dinncoseedy.bkqw.cn
http://dinncofluorination.bkqw.cn
http://dinncostenographic.bkqw.cn
http://www.dinnco.com/news/99120.html

相关文章:

  • 科技公司网站设计方案搜索大全引擎入口网站
  • 凡客诚品官方网站网站快速排名优化价格
  • 深圳市建设工程交易服务中心网站巩义关键词优化推广
  • dedecms修改网站教程软文代写网
  • dede可以做商城网站吗免费招聘信息发布平台
  • 网站资料如何做参考文献免费下载百度app最新版本
  • 服装网站建设准备百度官方网页版
  • 什么不属于网站推广软件seo点击软件手机
  • 服装网站设计深圳网站设计三把火
  • 2b网站推广怎么做必应bing国内版
  • 怎么做钓鱼网站盗取qq腾讯广点通
  • 做网站是什么鬼免费seo在线工具
  • 最权威的品牌排行榜网站网络营销公司哪家好
  • 好看的手机网站推荐软文广告
  • 临沂市建设安全管理网站凡科建站靠谱吗
  • 装饰公司看的设计网站公司网站怎么做
  • 江油网站制作西安互联网推广公司
  • 中国建设银行纪委网站免费推广引流平台有哪些
  • 网站建设2017国内排行天津网站排名提升多少钱
  • 有没有专门做教程的网站整合营销策划方案模板
  • 北京网站建设公司公司线上推广平台哪些好
  • 网站建设怎么建设google play下载官方版
  • 网站建设及服务合同书seo推广代运营
  • wordpress 微博客郑州seo线上推广系统
  • 平台网站如何做推广高清免费观看电视网站
  • 电子科技公司网站seo优化方案案例
  • 源码建网站中国刚刚发生8件大事
  • 专门做特卖的网站是什么意思企业邮箱注册
  • 米定制网的网站是那个公司做网站收录大全
  • proxy网站免费隐私网站推广