spring boot -- 监听器

一些系统配置,存储在数据库中,需要在项目启动时加载进缓存。此时可以实现ApplicationListener类来实现监听。

第一步:

package com.lic.base.servlet;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;

import com.lic.app.system.service.impl.SysConfigService;
import com.lic.base.tools.CacheHelp;

public class StartApplicationListener implements ApplicationListener<ContextRefreshedEvent>{

	protected Logger log = LoggerFactory.getLogger(StartApplicationListener.class);
	@Override
	public void onApplicationEvent(ContextRefreshedEvent event) {
		
		log.info("加载系统配置...");
		
		SysConfigService sysConfigService = event.getApplicationContext().getBean(SysConfigService.class);
		
		CacheHelp.SYS_CONFIG_MAP = sysConfigService.selectKeyValueByGroupCode(null);
		
		log.info("系统配置加载完成...");
	}

}
这个类 不会自动注册,需要我们手动注册。

第二步:

package com.lic.boot;

import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ImportResource;

import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import com.lic.base.servlet.StartApplicationListener;

@SpringBootApplication
@ImportResource("classpath:/spring/applicationContext.xml")
//@Configuration
@EnableAutoConfiguration
//@ComponentScan("main.java.com.huike")
// @EnableEurekaServer
public class StartApplication {

	private static final Logger log = LoggerFactory.getLogger(StartApplication.class);

	public static void main(String[] args) {
		log.info("服务开始启动了");
		SpringApplication app = new SpringApplication(StartApplication.class);
		app.addListeners(new StartApplicationListener());
		app.run(args);
	}
}

运行可以看到控制台打印:

04-27 15:52:23.917 [main] INFO  com.huike.boot.StartApplication - 服务开始启动了
04-27 15:52:24.489 [background-preinit] INFO  org.hibernate.validator.internal.util.Version - HV000001: Hibernate Validator 5.2.1.Final

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.3.RELEASE)

04-27 15:52:24.870 [main] INFO  com.huike.boot.StartApplication - No active profile set, falling back to default profiles: default
04-27 15:52:25.445 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner - No MyBatis mapper was found in '[com.huike.boot]' package. Please check your configuration.
04-27 15:52:26.021 [main] INFO  org.apache.catalina.core.StandardService - Starting service Tomcat
04-27 15:52:26.022 [main] INFO  org.apache.catalina.core.StandardEngine - Starting Servlet Engine: Apache Tomcat/8.5.6
04-27 15:52:26.103 [localhost-startStop-1] INFO  org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
04-27 15:52:27.716 [main] INFO  com.huike.base.servlet.StartApplicationListener - 加载系统配置...
04-27 15:52:28.013 [main] DEBUG com.huike.app.system.service.ISysConfigService.selectKeyValueByGroupCode - ==>  Preparing: select ckey, cvalue from sys_config where 1 = 1 
04-27 15:52:28.030 [main] DEBUG com.huike.app.system.service.ISysConfigService.selectKeyValueByGroupCode - ==> Parameters: 
04-27 15:52:28.045 [main] DEBUG com.huike.app.system.service.ISysConfigService.selectKeyValueByGroupCode - <==      Total: 21
04-27 15:52:28.049 [main] INFO  com.huike.base.servlet.StartApplicationListener - 系统配置加载完成...
04-27 15:52:28.054 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8090"]
04-27 15:52:28.062 [main] INFO  org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler [http-nio-8090]
04-27 15:52:28.070 [main] INFO  org.apache.tomcat.util.net.NioSelectorPool - Using a shared selector for servlet write/read
04-27 15:52:28.088 [main] INFO  com.huike.boot.StartApplication - Started StartApplication in 4.088 seconds (JVM running for 4.621)

打成jar包是可以使用的,但是打成war包就不能使用了。解决办法是在监听器上加一个@Component注解。

package com.huike.base.servlet;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

import com.huike.app.system.service.impl.SysConfigService;
import com.huike.base.tools.CacheHelp;

@Component
public class StartApplicationListener implements ApplicationListener<ContextRefreshedEvent>{

	protected Logger log = LoggerFactory.getLogger(StartApplicationListener.class);
	@Override
	public void onApplicationEvent(ContextRefreshedEvent event) {
		
		log.info("加载系统配置...");
		
		SysConfigService sysConfigService = event.getApplicationContext().getBean(SysConfigService.class);
		
		CacheHelp.SYS_CONFIG_MAP = sysConfigService.selectKeyValueByGroupCode(null);
		
		log.info("系统配置加载完成...");
	}

}
这样也会在项目启动时执行。



  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zerlinda_Li

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

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

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

打赏作者

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

抵扣说明:

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

余额充值