zoukankan      html  css  js  c++  java
  • WebServerInitializedEvent &ApplicationRunner

    application.properties

    app.name=yaoyuan2
    app.dept.id=1

    MyConfig.java

    import lombok.AllArgsConstructor;
    import lombok.Data;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class MyConfig {
        @Value("${app.name}")
        public String name;
        @Value("${app.dept.id}")
        public String id;
    
        @Bean
        public Dept getDept() {
            return new Dept(id);
        }
        @Bean
        public User getUser() {
            return new User(name,getDept());
        }
    }
    @Data
    @AllArgsConstructor
    class User {
        private String name;
        private Dept dept;
    }
    @Data
    @AllArgsConstructor
    class Dept {
        private String id;
    }

    初始化:

    @EventListener(WebServerInitializedEvent.class)
    public void onWebServerReady(WebServerInitializedEvent event) {
        System.out.println("1.当前WebServer实现类为:"+event.getWebServer().getClass().getName());
        Object obj = event.getApplicationContext().getBean(User.class);
        System.out.println("获取user对象:"+obj);
    }
    /**
     * 在spring boot应用启动后回调
     * @param context
     * @return
     */
    @Bean
    public ApplicationRunner runner(WebServerApplicationContext context) {
        return args -> {
            System.out.println("2.当前WebServer实现类为:"+context.getWebServer().getClass().getName());
            Object obj = context.getBean(User.class);
            System.out.println("获取user对象:"+obj);
        };
    }

    输出:

    2019-10-19 19:33:11.130  INFO 2312 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port(s): 8080
    1.当前WebServer实现类为:org.springframework.boot.web.embedded.netty.NettyWebServer
    获取user对象:User(name=yaoyuan2, dept=Dept(id=1))
    2019-10-19 19:33:11.135  INFO 2312 --- [           main] c.e.s.App                                : Started App in 4.57 seconds (JVM running for 5.33)
    2.当前WebServer实现类为:org.springframework.boot.web.embedded.netty.NettyWebServer
    获取user对象:User(name=yaoyuan2, dept=Dept(id=1))
  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/11704943.html
Copyright © 2011-2022 走看看