@PostConstruct 与 ApplicationContextAware实现类冲突问题解决_Java充电桩的博客-程序员资料[email protected] applicationcontext

技术标签: spring boot  database  mysql  数据库  

一般@PostConstruct 是可以在bean注册时执行的方法.

而我们经常会需要用到spring上下文的一些参数,就可以用一个工具类如SpringContextUtil

public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContextUtil.applicationContext = applicationContext;
    }
 }

比较常用的就是getBean(), getProperty()等等.

今天就碰到一个问题,一个配置类中使用了@PostConstruct ,里面需要去读yml的配置,而我使用的就是这个工具类去获取属性.

但是因为ApplicationContextAware接口还没实例化完成,导致空指针异常.

有两个比较简单易懂的实现方法

1. @ConditionalOnProperty

使用这个注解明确指出需要哪个属性才会注册该类,这样这个配置类就会等到ApplicationContextAware实例完成,去读属性后判断成功才会来注册这个类,如:

@ConditionalOnProperty(name = "req-log.file")

[email protected](“SpringContextUtil”)

同样也是加在这个配置类上, 让他依赖于SpringContextUtil工具类, 这样就必须先去找到这个Bean才会注册配置类,再执行自然就没有问题了.

不过比较麻烦的是需要在SpringContextUtil头上加个注解

@Component("SpringContextUtil")
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45369440/article/details/123896374

智能推荐

Spring Boot 之集成Sharding-JDBC+ Mybatis-Plus实现分库分表_yyangqqian的博客-程序员资料

文章目录Sharding-JDBC简介项目准备代码编写Sharding-JDBC简介Sharding-jdbc是开源的数据库操作中间件;定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。官方文档地址: https://shardingsphere...

如何使用Xshell连接虚拟机服务器(Ubuntu Server 16.04)_随便吧จุ๊บ的博客-程序员资料

如何使用Xshell连接本地虚拟机服务器第一步打开Xshell软件后,点击左上角文件图标,选择打开会话之后再点击左上角新建图标,选择新建会话,点击后,就会进到新建会话界面第二步但在此之前,先打开虚拟机服务器,我的是Ubuntu虚拟服务器,输入ifconfig后会弹出本虚拟服务器的IP地址,这个每个人都是不一样的,我的是192.168.145.130,然后记住它,一会要用到然后回到...

解决ie6在css上的兼容问题_JHCan333的博客-程序员资料

ie6上css碰到的坑前两天在给一个项目做东西的时候,碰到一个有意思的项目,是需要兼容ie6,有一些碰到并且解决的问题,给大家写下来,方便大家以后碰到类似的问题哈~1.important支持的不够好1.1为什么说不够好?important某些情况下不能决定最终的样式属性。1.2代码!代码!!我们通过对颜色的控制说明这一切~<style type="text/css"> ...

mybatis中关于example类详解_superShendan的博客-程序员资料

这几天刚接触example,很多内容都是破碎的,写一篇博文加深理解。一、什么是example类mybatis-generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大。理论上通过example类可以构造你想到的任何筛选条件。在mybatis-generator中加以配置,配置数据表的生成操作就可以自动生成example了。具体配置可以参考MBG有关配置。下面是mybatis自动生成example的使用。二、了解exam...

mybatis+mysql分库分表_springboot+mybatisplus+sharding-jdbc分库分表实例_可爱小甜甜喵的博客-程序员资料

项目实践现在Java项目使用mybatis多一些,所以我也做了一个springboot+mybatisplus+sharding-jdbc分库分表项目例子分享给大家。其它的框架内容不做赘述,直接上代码。数据准备装备两个数据库。并在两个库中建表,建表sql如下:DROP TABLE IF EXISTS `t_user_0`;CREATE TABLE `t_user_0` (`id` bigint(2...

【分布式】搭建springboot + mybatis-plus + druid + sharding-jdbc实现分库分表_天涯共明月的博客-程序员资料

【分布式】sharding-jdbc实现分库分表目录【分布式】sharding-jdbc实现分库分表1. 简介2. 数据库准备2.1 创建数据库test2.2 创建数据库订单表order3. 搭建springboot+mybatis-plus+sharding-jdbc+druid工程3.1 引入maven依赖3.2 实体类3.3 mapper层(mybatis-plus)3.4 启动类4. sharding-jdbc配置单库分表4.1 application.yml详细配置单库分表4.2 测试单库分表

随便推点

Springboot 2.6 + Mybatis Plus 3.5 集成 Sharding-jdbc 5.1 分库分表_springboot集成shardingsphere-jdbc-core5.3_Flying9001的博客-程序员资料

随着业务数据的增加,单个的数据库已经无法支撑系统运行了,为了提升系统的流畅性,分库分表就是为了解决系统在大量数据情况下系统相应时间的问题。Sharding-jdbc 作为成熟的分库分表技术框架,在国内应用广泛。本文将介绍基于 Springboot 2.6 + Mybatis Plus 3.5 集成 Sharding-jdbc 5.1 实现分库分表功能。

(原创)cocos2dx-lua TableView官方demo分析_weixin_30819163的博客-程序员资料

本来是想看看网上的教程文章,结果看了好几篇,复制代码各种报错,有很多不存在的类和变量,根本用不了。所以干脆自己去看官方demo,经过自己分析测试,已经大概会用了,顺便记录一下。以下是代码,复制粘贴就能运行的那种!(图片资源自备)新建 tableviewTest.lua,把下面的代码复制进去,保存为utf8格式。在需要的地方(比如main()函数里)调用require("tab...

java Web获取微信授权用户信息_zhangzhenkeai的博客-程序员资料

java Web获取微信授权用户信息1.准备工作首先需要去微信开发公众平台申请一个微信公众平台测试号,页面如下。登陆之后,页面如下。接口信息无需配置。页面往下拉会看到如下的页面。点击网页账号后面的修改需要填写url地址,注意url地址不能携带http:// 和https://,正确填下格式如下。如若没有URL地址可通过一下方法。获取。2.获取URL地址,首先打开内网穿透注册网站,注册步骤省略。...

SpringBoot整合Sharding-JDBC分库分表(简单使用)_会飞天的蜗牛的博客-程序员资料

Sharding-JDBC分库分表学习案例说明数据库结构项目结构导入依赖pomapplication.yml启动类实体类OrderOrderMapper业务接口OrderServiceOrderServiceImplOrderController测试案例说明订单案例,有飞机和火箭两个商品,对商品类型进行分表处理,对订单号进行分库存储。数据库结构CREATE DATABASE IF NOT EXISTS `sharedb1` DEFAULT CHARACTER SET utf8 COLLATE ut

Spring Boot集成Sharding-jdbc + Mybatis-Plus_CodersCoder的博客-程序员资料

Sharding-jdbc简介Sharding-jdbc是开源的数据库操作中间件;定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。Mybatis-Plus简介Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更

路漫漫其修远兮_dong_junshuai的博客-程序员资料_当妈路漫漫其修远兮

不知不觉,开博客两个多月了,时间过的真的很快,马上就要跟2016说再见了。两个月来,把自己学到的,见到的,用博客来记录下来,真的很开心。不为装X,只是一个简单的记录,让自己知道,自己做过些什么。今天看到自己的博客破千的访问量,虽然不多,却也是成长,路都是一步步走出来的,我想,同样到达山顶的两个人,一个是一步步爬上去的和一个做电缆车上去的,回首的时候,他们的心情完全是不同的。路漫漫其

推荐文章

热门文章

相关标签