ホームページ  >  記事  >  Java  >  SpringBoot 2 で遊んで、Listener をすばやく統合する

SpringBoot 2 で遊んで、Listener をすばやく統合する

(*-*)浩
(*-*)浩転載
2019-10-10 16:20:542362ブラウズ

この記事では、SpringBoot 2 での Listener の使い方に関する簡単なセットアップ チュートリアルを主に紹介します。読む前に、Listener の基本的な使い方と SpringBoot プロジェクトのビルド方法を理解しておく必要があります。

SpringBoot 2 で遊んで、Listener をすばやく統合する

簡単なデモ操作

ステップ 1: リスナーを作成し、リスナー クラスで @WebListener アノテーションを宣言します。具体的なコードは次のとおりです。

@WebListener
public class ApplicationListener implements ServletContextListener{
	private Logger log = LoggerFactory.getLogger(ApplicationListener.class);
	
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		log.info("ApplicationListener 监听器启动...");
	}
	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		log.info("ApplicationListener 监听器销毁...");
	}
}

ステップ 2: 作成した ApplicationListener クラスを JavaConfig を通じて Spring コンテキストに挿入します。

カスタム ApplicationListener を ServletListenerRegistrationBean の構築に渡し、ServletListenerRegistrationBean Bean インスタンスを作成します。具体的なコードは次のとおりです:

@Configuration
public class WebApplicationConfig {
	@Bean
	public ServletListenerRegistrationBean<ApplicationListener>  userServlet(){
		return new ServletListenerRegistrationBean<ApplicationListener> (new ApplicationListener());
	}
}

または、起動クラスで @ServletComponentScan アノテーションを宣言します。具体的なコードは次のとおりです。

@SpringBootApplication
@ServletComponentScan
public class SpringbootExamplesApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootExamplesApplication.class, args);
	}
}

Test

SpirngBoot プロジェクトを開始すると、ApplicationListener で定義されている ApplicationListener リスナー破壊... ログ情報が表示されます。

2019-10-04 00:58:39.361  INFO 5184 --- [  restartedMain] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]
2019-10-04 00:58:39.375  INFO 5184 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: &#39;characterEncodingFilter&#39; to: [/*]
2019-10-04 00:58:39.376  INFO 5184 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: &#39;hiddenHttpMethodFilter&#39; to: [/*]
2019-10-04 00:58:39.376  INFO 5184 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: &#39;formContentFilter&#39; to: [/*]
2019-10-04 00:58:39.377  INFO 5184 --- [  restartedMain] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: &#39;requestContextFilter&#39; to: [/*]
2019-10-04 00:58:39.420  INFO 5184 --- [  restartedMain] c.lijunkui.listener.ApplicationListener  : ApplicationListener 监听器启动...

ここでプロジェクトをスタートアップ状態で起動すると、エラーは報告されますが、破棄用のApplicationListenerに定義されているログ情報が出力されているのが確認できます。

Caused by: java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_144]
	at sun.nio.ch.Net.bind(Net.java:433) ~[na:1.8.0_144]
	at sun.nio.ch.Net.bind(Net.java:425) ~[na:1.8.0_144]
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[na:1.8.0_144]
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) ~[na:1.8.0_144]
	at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:236) ~[tomcat-embed-core-9.0.12.jar:9.0.12]
	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210) ~[tomcat-embed-core-9.0.12.jar:9.0.12]
	at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1108) ~[tomcat-embed-core-9.0.12.jar:9.0.12]
	at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:550) ~[tomcat-embed-core-9.0.12.jar:9.0.12]
	at org.apache.catalina.connector.Connector.startInternal(Connector.java:957) ~[tomcat-embed-core-9.0.12.jar:9.0.12]
	... 19 common frames omitted

2019-10-04 01:01:07.860  INFO 7864 --- [  restartedMain] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2019-10-04 01:01:07.863  INFO 7864 --- [  restartedMain] c.lijunkui.listener.ApplicationListener  : ApplicationListener 监听器销毁...
2019-10-04 01:01:07.876  INFO 7864 --- [  restartedMain] ConditionEvaluationReportLoggingListener :

概要

SpringBoot にリスナーを統合する手順は次のとおりです。

リスナーで @WebListener を宣言する必要があります

スタートアップ クラスで @ServletComponentScan アノテーションを宣言するか、ServletListenerRegistrationBean を通じて

Listener をラップし、それを JavaConfig

を通じて Spring コンテキストに挿入します。

コード例

私のローカル環境は次のとおりです:

SpringBoot バージョン: 2.1.0.RELEASE

Apache Maven バージョン: 3.6.0

Java バージョン: 1.8.0_144

IDEA: Spring Tools Suite (STS)

以上がSpringBoot 2 で遊んで、Listener をすばやく統合するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。