SpringBoot启动时让方法自动执行的几种实现方式-用处比如socket server端的启动

方法概览

1-2 属于java自身的启动时加载方式 3-7属于spring的加载方式

  1. static代码块

  2. 构造方法

  3. @PostConstruct注解

  4. ApplicationRunner

  5. CommandLineRunner

  6. 实现ServletContextListener接口

  7. ApplicationListener<ApplicationStartedEvent>

代码实现-都以启动服务端的servlet为demo

1.static

2.构造方法 

3.TestPostConstruct

代码一起展示:注意加入component注解,不然可以自行测试一下,启动不会初始化:

package com.example.initmethoddemo;

import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @Description: 第一种启动的方法
 * @author: LiuYC
 * @date: 2021年04月23日 10:16
 */
@Component
public class TestPostConstruct {
//way 1 静态代码块
    static {
        System.out.println("static");
    }
//    way 2 构造方法
    public TestPostConstruct() {
        System.out.println("constructer");
    }
//way 3 PostConstruct
    @PostConstruct
    public void init() {
        System.out.println("PostConstruct");
    }
}
 

 

4.implements ApplicationRunner
package com.example.initmethoddemo;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

/**
 * @Description: 基于spring启动的加载的方式demo
 * @author: LiuYC
 * @date: 2021年04月23日 10:19
 */

@Component
public class TestApplicationRunner implements ApplicationRunner {
    /**
     * 在填充普通bean属性之后但在初始化之前调用
     * 类似于initializingbean的afterpropertiesset或自定义init方法的回调
     */

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("hello application runner demo");
    }
}
5.implements CommandLineRunner 

package com.example.initmethoddemo;

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

/**
 * @Description: commondline
 * @author: LiuYC
 * @date: 2021年04月23日 10:23
 */
@Component
public class TestCommondLineRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("hello init-method  CommandLineRunner success");
    }
}
6.implements ServletContextListener  同时相关的依赖注意
 注意 启动类加上注解 @ServletComponentScan
package com.example.initmethoddemo;

import org.springframework.boot.context.event.ApplicationStartedEvent;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;


/**
 * @Description: Lisnert
 * @author: LiuYC
 * 注意 启动类加上注解 @ServletComponentScan
 * @date: 2021年04月23日 10:27
 */
@WebListener
public class TestListener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        System.out.println("【监听器 StartListener】 contextDestroyed method %%%%%%%%%%%%%%%%");
    }
    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        System.out.println("【监听器 StartListener】StartListener contextInitialized method %%%%%%%%%%%%%%");
        System.out.println("在监听器中做一些预处理..........");
    }
}
7.implements ApplicationListener<ApplicationStartedEvent>
package com.example.initmethoddemo;

import org.springframework.boot.SpringApplicationRunListener;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.stereotype.Component;

import java.sql.SQLOutput;

/**
 * @Description: ServletContextAware
 * @author: LiuYC
 * @date: 2021年04月23日 10:49
 */
@Component
public class ApplicationRunListener implements ApplicationListener<ApplicationStartedEvent> {

//    选择方法继承或者实现的idea快捷键
//    Ctrl + I     Ctrl + o      Alt + Insert  图形化操作

    @Override
    public void onApplicationEvent(ApplicationStartedEvent applicationStartedEvent) {
        System.out.println("application run listener ");

    }
}

对应的代码demo获取:

https://gitee.com/daka1004/demo.git

 

参考文章:

探究SpringBoot启动时实现自动执行代码

SpringBoot启动时让方法自动执行的几种实现方式

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot可以通过集成Netty和socket.io-client来实现Socket客户端。在pom.xml文件中引入所需的依赖,然后可以使用socket.io-client库来建立与socket.io服务端的连接,并进行通信。\[1\] 具体实现步骤如下: 1. 在pom.xml文件中添加socket.io-client的依赖。 2. 创建一个Socket客户端类,使用IO.socket(url)方法来建立与指定的socket.io服务端的连接。 3. 使用socket.emit方法发送数据到服务端事件。 4. 使用socket.on方法监听服务端事件。 你可以参考\[2\]中提供的Spring Boot实现Socket通讯的源码地址,其中包含了完整的Socket客户端和服务端实现示例。这个示例使用了Netty框架来实现服务端,而客户端则使用了Socket编程。 希望对你有帮助! #### 引用[.reference_title] - *1* *3* [SpringBoot(23) 集成socket.io服务端和客户端实现通信](https://blog.csdn.net/qq_38225558/article/details/104217227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [SpringBoot实现Socket客户端,Netty服务端实现Java通讯(附源码及注释详解)](https://blog.csdn.net/beishanyingluo/article/details/101478887)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

specialApe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值