随笔 - 836  文章 - 1 评论 - 40 阅读 - 102万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

 参考原文:https://www.cnblogs.com/zuidongfeng/p/9926471.html

 方式1:implements ApplicationRunner

复制代码
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
public class ApplicationRunnerImpl implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("通过实现ApplicationRunner接口,在spring boot项目启动后打印参数");
        String[] sourceArgs = args.getSourceArgs();
        for (String arg : sourceArgs) {
            System.out.print(arg + " ");
        }
        System.out.println();
    }
}
复制代码

 

方式2:implements CommandLineRunner

 

 

spring容器加载完自动监听

 

第1步,实现springboot默认的监听接口,该方法在spring容器加载完自动监听

复制代码
import com.sinosoft.speech.swing.Main;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
/**
 * spring boot 容器加载后自动监听
  */
@Component
public class MyCommandRunner implements CommandLineRunner {
    @Override
    public void run(String... args) {
         System.out.println("开始启动1个页面");
        try {
            Runtime.getRuntime().exec("cmd   /c   start   http://localhost:8080/index");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
复制代码

2.正常启动就行

复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * @author lijunming
 * @date 2018/7/22 下午2:40
 */
@SpringBootApplication
public class SpeechApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(SpeechApplication.class, args);
    }
}
复制代码

配置完后,运行springboot启动类,就会自动打开1个浏览器访问项目的html5页面,

 

方式 3 : 实现ServletContextAware接口并重写其setServletContext方法

复制代码
import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;
 
import javax.servlet.ServletContext;
 
@Component
public class DemoServletContextAware implements ServletContextAware {
    // 该方法会在填充完普通Bean的属性,但是还没有进行Bean的初始化之前执行
    @Override
    public void setServletContext(ServletContext servletContext) {
        System.out.println("------------>>>>>>>>>> ServletContextAware");
    }
}
复制代码

 

方式 4  实现ServletContextListener接口

复制代码
import org.springframework.stereotype.Component;
 
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
 
@Component
public class DemoServletContextListener implements ServletContextListener {
    // 在初始化Web应用程序中的任何过滤器或servlet之前,将通知所有servletContextListener上下文初始化
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("------------>>>>>>>>>> ServletContextListener");
    }
}
复制代码

 

方法5 :将要执行的方法所在的类交个spring容器扫描(@Component),并且在要执行的方法上
添加@PostConstruct注解或者静态代码块执行 
复制代码
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
 
@Component
public class DemoClass {
 
    // 静态代码块会在依赖注入后自动执行,并优先执行
    static {
        System.out.println("------------>>>>>>>>>> static");
    }
 
    // 在依赖注入完成后自动调用
    @PostConstruct
    public static void demo() {
        System.out.println("------------>>>>>>>>>> PostConstruct");
    }
}
复制代码

 

 
 
posted on   lshan  阅读(572)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示