美文网首页
spring各个注解执行顺序

spring各个注解执行顺序

作者: 风一样的存在 | 来源:发表于2021-06-07 18:15 被阅读0次

当时想在启动后初始化一个上下文,但是发现后面获取上下文赋值得到的值一直是null。debug发现代码执行顺序有问题,我加了@Oder还是没用,获取的appInfo一直为null。

@Component
@Order(value = 1)
public class UpgradeRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        String path = System.getProperty("user.dir");
        String filePath = path + File.separator + "version.txt";
        //项目启动初始化应用信息
        UpgradeContext.appInfo = JSON.parseObject(FileUtil.readUtf8String(filePath), RunInfo.class);

        IOFileFilter files = FileFilterUtils.and(FileFilterUtils.fileFileFilter(),
                FileFilterUtils.nameFileFilter("version.txt"));
        FileAlterationObserver observer = new FileAlterationObserver(new File(path),files);
        observer.addListener(new FileListener());
        //创建文件变化监听器
        FileAlterationMonitor monitor = new FileAlterationMonitor(TimeUnit.MINUTES.toMillis(2), observer);
        //开始监控文件变化
        monitor.start();
    }
}
@Slf4j
@Service
public class UpgradeService {
    @Autowired
    private AppConfig config;
    @Autowired
    private OkHttpUtil okHttpUtil;

    private String credential;

    private RunInfo appInfo;

    @PostConstruct
    public void init() {
        this.credential = Credentials.basic(config.getTokenUser(), config.getTokenPass(), StandardCharsets.UTF_8);
        this.appInfo = UpgradeContext.appInfo;
    }
}

经过测试:执行顺序@PostConstruct > InitializingBean > ApplicationRunner。当然也可以使用spring监听事件初始化一些操作:

  • ApplicationStartingEvent:在Spring最开始启动的时候触发
  • ApplicationEnvironmentPreparedEvent:在Spring已经准备好上下文但是上下文尚未创建的时候触发
  • ApplicationPreparedEvent:在Bean定义加载之后、刷新上下文之前触发
  • ApplicationStartedEvent:在刷新上下文之后、调用application命令之前触发
  • ApplicationReadyEvent:在调用applicaiton命令之后触发
  • ApplicationFailedEvent:在启动Spring发生异常时触发
    另外:ApplicationRunnerCommandLineRunner的执行在第五步和第六步之间,Bean的创建在第三步和第四步之间;在启动类中,执行SpringApplication.run()方法后的代码,会在第六步后执行。

相关文章

  • spring各个注解执行顺序

    当时想在启动后初始化一个上下文,但是发现后面获取上下文赋值得到的值一直是null。debug发现代码执行顺序有问题...

  • Spring面试题(第三季)

    Spring 4 AOP 执行顺序 Spring 5 AOP 执行顺序 循环依赖

  • TestNG

    注解 执行顺序 testng.xml tag详解

  • spring boot 启动相关的学习

    在Spring boot 开发中,经常遇到一些注解,类方法;参数以及启动参数,先后顺序以及执行的方式,有点分不清;...

  • 过滤器-06-19

    Filter;实现接口 重写方法:init(),doFilter(),destroy() 执行顺序:注解按字母顺序...

  • Spring之调整Bean加载顺序

    通常我们是不需要干预Spring bean加载顺序 @Order注解 加载顺序不受@Order 影响,@Order...

  • 29.Spring Cache

    常用注解 @EnableCaching 开启缓存注解 @Cacheable 在方法执行前spring先查看缓存是否...

  • TestNG注解

    各个注解运行顺序为: @BeforeSuite->@BeforeTest->@BeforeClass->{@Bef...

  • java+TestNG注解执行顺序解析

    不同的注解对测试用例的执行都有不同的执行顺序控制,详细的注解控制如下:1.1 @BeforeSuite被@Befo...

  • 19 Spring EL三元运算(if-then-else)实

    Spring EL支持三元运算符,执行“if then else”条件检查。 例如, Spring EL以注解形式...

网友评论

      本文标题:spring各个注解执行顺序

      本文链接:https://www.haomeiwen.com/subject/txtreltx.html