Spring-Boot 使用手记
来源:互联网 发布:淘宝悠悠球店铺 编辑:程序博客网 时间:2024/05/24 04:41
Spring-Boot 使用手记
Service 注解
如果使用 Service
注解,请务必使用 ComponentScan
并指定扫描路径。
定时器支持
如果要使用定时器,请务必使用 EnableScheduling
开启定时器支持,并且 spring-boot 默认的定时器是单线程模式的,请添加如下代码:
/** * 定时器的多线程支持 */@Configurationpublic class ScheduleConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { // @EnableSchedulling 和 @Scheduled默认是基于单线程 taskRegistrar.setScheduler(Executors.newScheduledThreadPool(5)); }}
异步支持
如果要使用 Async
支持异步调用,请务必使用 EnableAsync
开启异步支持,且需要手动实现异步的线程池支持。
/** * 异步执行的多线程支持 */@Configurationpublic class AsyncConfig { @Bean public Executor taskExecutor() { return new SimpleAsyncTaskExecutor(); }}
redis 支持
新版本的 spring-boot 使用的 redis 支持,在 pom 中添加如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>
SpringUtils
获取程序的 context,最好加上 Lazy(false)
的注解
import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.context.annotation.Lazy;import org.springframework.stereotype.Component;// don't move this class package path@Component@Lazy(false)public class SpringUtils implements ApplicationContextAware { private static ApplicationContext applicationContext = null; public static ApplicationContext getApplicationContext() { return applicationContext; } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if (SpringUtils.applicationContext == null) { SpringUtils.applicationContext = applicationContext; } } public static Object getBean(String name) { return getApplicationContext().getBean(name); } // 通过class获取Bean. public static <T> T getBean(Class<T> clazz) { return getApplicationContext().getBean(clazz); } // 通过name,以及Clazz返回指定的Bean public static <T> T getBean(String name, Class<T> clazz) { return getApplicationContext().getBean(name, clazz); }}
spring-boot 缓存
很多时候,使用 redis 作为缓存是为了减少数据库读写,以及为了在集群中获取和数据库类似的同一性。但是有时候,低延迟的同一性不是那么重要,就不会考虑引入 redis 等 NoSql 服务。
这时候就可以用 Cacheable
注解了。如下:
@Configuration@EnableCachingpublic class BeanConfig { @Bean public CacheManager cacheManager() { ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager(); return cacheManager; }}
ConcurrentMapCacheManager
是一个最为简单的缓存管理器,但是没有设置过期时间的接口。此时,可以使用 Caffeine Cache
,作为缓存管理器。
@SpringBootApplication@EnableScheduling@EnableCachingpublic class BeanConfig { @Bean @Primary public CacheManager caffeineCacheManager() { SimpleCacheManager cacheManager = new SimpleCacheManager(); ArrayList<CaffeineCache> caches = Lists.newArrayList(); caches.add(new CaffeineCache("defaultCache", Caffeine.newBuilder().recordStats() .expireAfterWrite(300, TimeUnit.SECONDS) .maximumSize(1000) .build()) ); cacheManager.setCaches(caches); return cacheManager; }}
Spring Boot使用@Cacheable注解
spring-boot中配置和使用Caffeine Cache
参考文档
Spring Boot日志配置
Spring Boot干货系列:(七)默认日志框架配置
spring boot 获取ApplicationContext
阅读全文
0 0
- Spring-Boot 使用手记
- 【Spring Boot】Spring Boot
- spring boot
- spring boot
- spring-boot
- spring boot
- Spring Boot
- spring boot
- spring boot
- Spring Boot
- spring boot
- Spring Boot
- spring boot
- spring boot
- Spring Boot
- Spring-Boot
- spring boot
- Spring Boot
- activeMQ,spring的jmstemplate简单例子
- 触发器建表方法
- Struts 拦截器 、
- 开发8年总结下
- Struts2的动态调用的三种方式
- Spring-Boot 使用手记
- Fragment传值-ImagView轮播
- 浅 浅谈原码、补码和反码
- win7系统配置简单web服务器
- ActiveMQ使用spring JmsTemplate发送消息(一)
- vue-amap圆形编辑完获取半径中心点
- Windows窗口消息大全
- Eclipse调试时查看全部Console内容
- 替换空格(字符串)