Java SpringBoot Bean InitializingBean 项目初始化
Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean。工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该工厂Bean的getObject方法所返回的对象。
Spring初始化bean有两种方式:
- 实现InitializingBean接口,实现afterPropertiesSet方法。(比通过反射调用init-method指定的方法效率要高一点)
- 配置文件中通过init-method指定,两种方式可以同时使用。(init-method方式消除了对spring的依赖)
InitializingBean 使用场景:
- 通过外部对类是否是单例进行控制,该类自己无法感知
- 对类的创建之前进行初始化的操作,在afterPropertiesSet()中完成。
执行顺序优先级:
构造方法 > postConstruct >afterPropertiesSet > init方法
如果调用afterPropertiesSet方法时出错,则不调用init-method指定的方法。
package com.vipsoft.mqtt.pool;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@Service
public class MqttManager implements InitializingBean {
public MqttManager() {
System.out.println("构造方法执行...");
}
@PostConstruct
public void postConstruct() {
System.out.println("postConstruct方法执行...");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("afterPropertiesSet方法执行...");
}
public void init() {
System.out.println("init方法执行...");
}
@Bean(initMethod = "init")
public MqttManager test() {
return new MqttManager();
}
}
输出
构造方法执行...
postConstruct方法执行...
afterPropertiesSet方法执行...
构造方法执行...
postConstruct方法执行...
afterPropertiesSet方法执行...
init方法执行...
Java SpringBoot Bean InitializingBean 项目初始化的更多相关文章
- SpringBoot系列教程之Bean之指定初始化顺序的若干姿势
上一篇博文介绍了@Order注解的常见错误理解,它并不能指定 bean 的加载顺序,那么问题来了,如果我需要指定 bean 的加载顺序,那应该怎么办呢? 本文将介绍几种可行的方式来控制 bean 之间 ...
- 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案
JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ...
- JAVA - SpringBoot项目跨域访问
JAVA - SpringBoot添加支持CORS跨域访问 CORS(Cross-Origin Resource Sharing)“跨域资源共享”,是一个W3C标准,它允许浏览器向跨域服务器发送Aja ...
- JAVA - SpringBoot项目引用MyBatis操作数据库
JAVA - SpringBoot项目引用MyBatis操作数据库 1. 创建SpringBoot项目,参考:https://www.cnblogs.com/1285026182YUAN/p/1232 ...
- JAVA - SpringBoot项目引用generator生成 Mybatis文件
JAVA - SpringBoot项目引用generator生成 Mybatis文件 在spring官网https://start.spring.io/自动生成springboot项目,这里选择项目 ...
- Java SpringBoot 项目构建 Docker 镜像调优实践
PS:已经在生产实践中验证,解决在生产环境下,网速带宽小,每次推拉镜像影响线上服务问题,按本文方式构建镜像,除了第一次拉取.推送.构建镜像慢,第二.三-次都是几百K大小传输,速度非常快,构建.打包.推 ...
- SpringBoot(十):读取application.yml下配置参数信息,java -jar启动时项目修改参数
读取application.yml下配置参数信息 在application.yml文件内容 my: remote-address: 192.168.1.1 yarn: weburl: http://1 ...
- 向虚拟机注册钩子,实现Bean对象的初始化和销毁方法
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 有什么方式,能给代码留条活路? 有人说:人人都是产品经理,那你知道吗,人人也都可以是 ...
- java~springboot~目录索引
回到占占推荐博客索引 最近写了不过关于java,spring,微服务的相关文章,今天把它整理一下,方便大家学习与参考. java~springboot~目录索引 Java~关于开发工具和包包 Java ...
- zookeeper实现项目初始化缓存以及同步监听
Spring-利用InitializingBean接口和zookeeper实现项目初始化缓存以及同步监听 1.先贴出几个需要用到的工具类 ZkClientUtils import com.ithzk. ...
随机推荐
- 整理unity资料
https://www.cnblogs.com/fly-100/p/3910515.html 协同的概念介绍
- Educational Codeforces Round 103 (Rated for Div. 2) A~D题解
写在前边 链接:Educational Codeforces Round 103 (Rated for Div. 2) A. K-divisible Sum 链接:A题链接 题目大意: 要求构造一个\ ...
- 新手VSCode配置C++20
最近买了本C++20的书,想要自己配置下在VScode的环境 例子代码: #include <iostream> #include <format> int main() { ...
- 旺店通·企业奇门与用友BIP旺店通销售出库单对接销售订单
源系统平台:旺店通·企业奇门 源系统接口: 查询销售出库单wdt.stockout.order.query.trade 目标系统平台: 用友BIP目标系统接口: 销售订单单个保存/yonbip/sd/ ...
- Hive的使用以及如何利用echarts实现可视化在前端页面展示(四)---连接idea使用echarts可视化界面
说来惭愧,我的javaweb烂得一批,其他步骤我还是很顺利地,这个最简单的,我遇到了一系列问题.只能说,有时候失败也是一种成功吧 这一步其实就是正常的jdbc,没什么可说明的,但是关于使用echart ...
- 聊聊分布式 SQL 数据库Doris(九)
优化器的作用是优化查询语句的执行效率,它通过评估不同的执行计划并选择最优的执行计划来实现这一目标. CBO: 一种基于成本的优化器,它通过评估不同查询执行计划的成本来选择最优的执行计划.CBO会根据数 ...
- 最新版本——Hadoop3.3.6单机版完全部署指南
大家好,我是独孤风,大数据流动的作者. 本文基于最新的 Hadoop 3.3.6 的版本编写,带大家通过单机版充分了解 Apache Hadoop 的使用.本文更强调实践,实践是大数据学习的重要环节, ...
- 基于Redis的简易延时队列
基于Redis的简易延时队列 一.背景 在实际的业务场景中,经常会遇到需要延时处理的业务,比如订单超时未支付,需要取消订单,或者是用户注册后,需要在一段时间内激活账号,否则账号失效等等.这些业务场景都 ...
- nacos 安装和使用
Nacos 是阿里巴巴开源项目,用于构建微服务应用的服务发现.配置管理和服务管理. 在微服务项目中不同模块之间服务调用时,实现服务注册与发现. Nacos 使用: Nacos 是java开发的,依赖 ...
- Vue2.0 学习 第二组 语法模板
本笔记主要参考菜鸟教程和官方文档编写. 1.文本绑定 一般在dom中用{{}}标时,并且在vue构造体内的data中定义文本内容 <div id="app"> & ...