SpringBoot——整合 Listener

1. 通过注解扫描完成 Listener 组件的注册

1.1 编写 Listener

/**
 * springBoot 整合 Listener
 *
 *<listener>
 * <listener-class>com.bjsxt.listener.FirstListener</listener-class>
 *</listener>
 */
@WebListener
public class Listener1 implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("listener...init...");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}

1.2 启动类

@EnableAutoConfiguration
@ServletComponentScan("com.zth")
public class App {
    public static void main(String[] args){
        // 启动 SpirngBoot 项目
        SpringApplication.run(App.class,args);
    }
}

2. 通过方法完成 Listener 组件注册

2.1 编写 Listener

@SpringBootApplication
public class App2 {
    public static void main(String[] args){
        // 启动 SpirngBoot 项目
        SpringApplication.run(App2.class,args);
    }

    @Bean
    public ServletListenerRegistrationBean listenerRegistrationBean (){
        ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new Listener2());
        return bean;
    }
    
}

 

 

 

### 实现Spring Boot集成Apache MINA SSHD #### 创建SSH服务器实例并配置端口 为了在Spring Boot应用程序中创建一个简单的SSH服务器,可以利用`SshServer.setUpDefaultServer()`方法来初始化默认设置的服务器对象。通过调用此函数返回的对象进一步指定监听地址与端口号[^3]。 ```java import org.apache.sshd.server.SshServer; // ...其他必要的导入语句... @Configuration public class SshServerConfig { @Bean public SshServer sshServer() throws IOException { SshServer sshd = SshServer.setUpDefaultServer(); sshd.setPort(2222); // 设置自定义端口 return sshd; } } ``` #### 注册命令执行器 为了让客户端能够远程执行某些特定指令,在服务端还需要注册相应的CommandFactory接口实现类。这里展示了一个基础的例子——EchoShell工厂,它会简单地回显收到的信息给连接者[^4]。 ```java import org.apache.sshd.common.Factory; import org.apache.sshd.server.command.Command; class EchoShell implements Factory<Command> { private static final String ECHO_SHELL_NAME = "echo"; @Override public Command create() { return new EchoShellCommand(); } private static class EchoShellCommand extends AbstractProcessBuilderCommand { protected EchoShellCommand() { super(new ProcessBuilder(ECHO_SHELL_NAME)); } } } @Bean public void setupCommandFactory(SshServer sshd){ sshd.setCommandFactory(new DefaultCommandFactory()); } ``` 请注意上述代码片段中的`setupCommandFactory`方法应该被放置在一个适当的位置以便于注入依赖关系,并且实际应用时可能需要更复杂的逻辑处理而不是仅仅反射输入作为回应[^5]。 #### 启动SSH服务 最后一步就是确保当Spring上下文加载完成之后启动这个SSH Server Bean。这可以通过监听ApplicationReadyEvent事件来达成目的[^6]。 ```java @Component @Slf4j public class ApplicationStartupListener implements ApplicationListener<ApplicationReadyEvent> { private final SshServer sshServer; @Autowired public ApplicationStartupListener(SshServer sshServer) { this.sshServer = sshServer; } @Override public void onApplicationEvent(ApplicationReadyEvent event) { try { log.info("Starting SSH server..."); sshServer.start(); // 开启ssh服务 log.info("SSH server started successfully."); } catch (IOException e) { throw new RuntimeException(e); } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值