一.方式一,使用ApplicationListener<E extends ApplicationEvent>监听ContextRefreshedEvent事件 /** * @author zhangboqing * @date 2019-11-03 */ @Component public class MyApplicationListener implements ApplicationListener<ContextRefreshedEvent> { @Autowired p…
常有在spring容器启动后执行某些操作的需求,现做了一个demo的实现,做一下记录,也希望可以给需要的同学提供参考. 1.spring启动后,以新线程执行后续需要的操作,所以执行类实现Runnable接口 @Component public class StepExecutor implements Runnable{ @Overridepublic void run() {startStreamTask(); } public void startStreamTask() { //do yo…
声明 1.建议先阅读<Spring源码分析专题 -- 阅读指引> 2.强烈建议阅读过程中要参照调用过程图,每篇都有其对应的调用过程图 3.写文不易,转载请标明出处 前言 关于 IOC 容器启动的内容很多,我将分上中下三篇讲解,其中上篇相对简单,中篇最为复杂,请大家耐心阅读. 上篇 - 主要是相关基础说明和找到分析入口 中篇 - 讲解定位.加载.注册的过程(实例化在依赖注入的章节再讲) 下篇 - 细节补充 调用过程图 由于篇幅问题,此处我只放个缩略图,高清大图请点击链接☞ IOC容器启动调用过程…
1.       背景 1.1.       背景介绍 在web项目中我们有时会遇到这种需求,在web项目启动后需要开启线程去完成一些重要的工作,例如:往数据库中初始化一些数据,开启线程,初始化消息队列等,在这种需求下,如何在web容器启动后执行这些工作就成为了本文的重点. 1.2.       测试项目搭建 首先我们新建一个web项目来模拟这种需求,这里我们选择创建一个maven项目 在项目的pom文件中添加以下properties项 <properties>   <!--web--&…
docker容器启动后添加端口映射的两种方法: 一.通过修改防火墙策略添加端口映射 docker容器已创建好,但是想在容器内配置tomcat监控,需要新的端口去访问,但是映射时没有映射多余端口,此时,我们可以通过防火墙策略去映射端口,如下: iptables -t nat -A DOCKER -p tcp --dport 12580 -j DNAT --to 172.20.0.3:12580 iptables -t nat -A POSTROUTING -p tcp -s 172.20.0.3…
DOCKER 给运行中的容器添加映射端口 方法1 1.获得容器IP 将container_name 换成实际环境中的容器名 docker inspect `container_name` | grep IPAddress 2. iptable转发端口 将容器的8000端口映射到docker主机的8001端口 复制代码代码如下: iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8…
原文地址:http://blog.csdn.net/zghwaicsdn/article/details/51186915 ContextLoaderListener监听器,加载ROOT WebApplicationContext 1.在web.xml配置监听器 <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> …
@EnableAsync annotation metadata was not injected 2015年12月20日 20:06:54 7570 在初始化spring事务部分碰到该错误, 详细错误信息如下: 警告: Exception encountered during context initialization - cancelling refresh attempt org.springframework.beans.factory.BeanCreationException: E…
原因: 容器同时只能管理一个进程,如果这个进程结束了容器就退出了,但是不表示容器只能运行一个进程(其他进程可在后台运行),但是要使容器不退出必须要有一个进程在前台执行.   解决方案: 启动脚本最后一个进程一定要用前台运行方式 即在进程最后不加 &(&表示在后台执行),否则容器退出   可在脚本后加  /bin/bash ,如果还不行,就换为 tail -f /dev/null (实时查看/dev/null)…
查看状态报错,报错,百度硕士nc问题,让看.out文件,但是这哥文件是空的,那就看log 016-12-15 14:08:19,355 [myid:] - INFO [main:QuorumPeer$QuorumServer@149] - Resolved hostname: StandByNameNode to address: StandByNameNode/192.168.58.183 2016-12-15 14:08:19,356 [myid:] - INFO [main:QuorumP…
最近项目中遇到一个业务场景,就是在Spring容器启动后获取所有的Bean中实现了一个特定接口的对象,第一个想到的是ApplicationContextAware,在setApplicationContext中去通过ctx获取所有的bean,后来发现好像逻辑不对,这个方法不是在所有bean初始化完成后实现的,后来试了一下看看有没有什么Listener之类的,发现了好东西ApplicationListener,然后百度一下ApplicationListener用法,原来有一大堆例子,我也记录一下我…
最近项目中遇到一个业务场景,就是在Spring容器启动后获取所有的Bean中实现了一个特定接口的对象,第一个想到的是ApplicationContextAware,在setApplicationContext中去通过ctx获取所有的bean,后来发现好像逻辑不对,这个方法不是在所有bean初始化完成后实现的,后来试了一下看看有没有什么Listener之类的,发现了好东西ApplicationListener,然后百度一下ApplicationListener用法,原来有一大堆例子,我也记录一下我…
工作中需要对一个原本加载属性文件的工具类修改成对数据库的操作当然,ado层已经写好,但是需要从Spring中获取bean,然而,工具类并没有交给Spring来管理,所以需要通过方法获取所需要的bean.于是整理了Spring获取bean的几种方法. 一. 在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:beans.xml"); ac.ge…
1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案. 第一种方案是在容器启动后手动导入,太low了不行.第二种在Spring Boot客户端连接Mysql容器时初始化数据库,你可以参考使用flyway进行数据库版本控制一文,但是这依赖客户端的能力.能不能做到Mysql容器启动时就自己初始化数据库呢?当然可以!今天就来演示一下.全部代码见文末. 2.…
uboot和内核到底是什么?uboot实质就是一个复杂的裸机程序:uboot可以被配置也可以做移植: 操作系统内核本身就是一个裸机程序,和我们学的uboot和其他裸机程序没有本质的区别:区别就是我们操作系统运行起来后可以分为应用层和内核层,分层后,两层的权限不同,内存访问和设备操作的管理上更加精细(内核可以随便方位各种硬件,而应用程序只能被限制的访问硬件和内存地址) 直观来看:uboot的镜像是u-boot.bin,Linux系统的镜像是zImage,这两个东西其实都是两个裸机程序镜像.从系统启…
docker rm -f OperationCenter rm -f /root/webapps/logs/* image_name="harbor.gfstack.geo/geostack/geoglobe_runtime:7.18380.20190115" docker pull $image_name docker run -d -p 8080:8080 --name OperationCenter -v /root/webapps/OperationCenter:/srv/to…
docker run [option] 镜像名 [向启动容器中传入的命令] 常用可选参数说明: -i 表示以“交互模式”运行容器 -t 表示容器启动后会进入其命令行.加入这两个参数后,容器创建就能登录进去.即 分配一个伪终端. --name 为创建的容器命名 -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射.注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上. -d 在run后面加上-d参数,则会…
目录 从官方镜像启动:prom/prometheus 官方Dockerfile分析 编写自己的Dockerfile 构建镜像: 启动容器: 从官方镜像启动:prom/prometheus 拉取镜像 $ docker pull prom/prometheus 启动容器 方式1: $ docker run -td -p 9090:9090 --name prometheus1 prom/prometheus 方式2:路径挂载 $ docker run \ -p 9090:9090 \ -v /pat…
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成mybatis ) spring boot 学习之路4(日志输出) spring boot 学习之路5(打成war包部署tomcat) spring boot 学习之路6(定时任务) spring boot 学习之路6(集成durid连接池) spring boot 学习之路7(静态页面自动生效问题)…
目录 一.前言 二.容器启动 三.总结 =======正文分割线====== 一.前言 spring cloud大行其道的当下,如果不了解基本原理那么是很纠结的(看见的都是约定大于配置,但是原理呢?为什么要这么做?).spring cloud是基于spring boot快速搭建的,今天咱们就看看spring boot容器启动流程.(本文不讲解如何快速启动spring boot,那些直接官方看即可,官网文档飞机票) 二.容器启动 spring boot一般是指定容器启动main方法,然后以命令行方…
什么时候创建嵌入式的Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat: 获取嵌入式的Servlet容器工厂: 1).SpringBoot应用启动运行run方法 2).refreshContext(context);SpringBoot刷新IOC容器[创建IOC容器对象,并初始化容器,创建容器中的每一个 组 件 ] : 如 果 是 web 应 用 创 建 AnnotationConfigEmbeddedWebApplicationContext, 否 则 : Anno…
/** * 在容器启动的时候 加载没问完成的消息重发 * @author zhangyukun * */ @Component @Slf4j public class LoadMessageListener implements ApplicationListener<ContextRefreshedEvent>,Ordered { @Autowired QueueMessageService queueMessageService; @Override public int getOrder…
一. 我这里用的环境 tomcat: tomcat 8 jdk: jdk 7 spring boot 版本: 1.5 二. 将创建好的spring boot项目做如下修改 2.1. 修改打包形式 在pom.xml中设置<packaging>war</packaging> 2.2. 移除切入式tomcat插件 在spring-boot-starter-web,添加如下配置 <dependency> <groupId>org.springframework.bo…
关于Spring Boot,已经有很多介绍其如何使用的文章了,本文从源代码(基于Spring-boot 1.5.6)的角度来看看Spring Boot的启动过程到底是怎么样的,为何以往纷繁复杂的配置到如今可以这么简便. 1. 入口类 package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBoot…
前言:本系列文章非本人原创,转自:http://tengj.top/2017/04/24/springboot0/ 正文 我们开发任何一个Spring Boot项目,都会用到如下的启动类 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 从上面代码可以看出,Ann…
今天介绍 3 种运行 Spring Boot 应用的方式,看大家用过几种? 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spring Boot 开启的 2 种方式 Spring Boot 自动配置原理.实战 Spring Boot 2.x 启动全过程源码分析 更多请在Java技术栈微信公众号后台回复关键字:boot. 运行 Spring Boot 应用的 3 种方式 1.在 IDE 中运行 在 Eclipse.IDEA 中直接运行,又有以下两种方…
实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第一步,安装操作系统 首先在腾讯云上安装一个干净的Ubuntu系统 系统使用Ubuntu 16.04 64位 这里服务市场虽然有docker,但是版本都太低(1.8.2左右),现在的一些镜像都不支持这些低版本的了,所以自己手动装个  腾讯云推荐使用ssh连接,配置好后就不用输入登入密码了 秘钥可以在腾…
SpringBoot启动 Spring Boot通常有一个名为*Application的入口类,在入口类里有一个main方法,这个main方法其实就是一个标准的java应用的入口方法. 在main方法中使用SpringApplication.run方法启动SpringBoot应用项目. 其中@SpringBootApplication是Spring Boot的核心注解,它是一个组合注解: 其中@SpringBootApplication注解主要组合了@Configuration.@EnableA…
概述 Spring Boot 应用目前应该是 Java 中用得最多的框架了吧.其中 Spring Boot 最具特点之一就是自动配置,基于Spring Boot 的自动配置,我们可以很快集成某个模块,不用加 xml 之类的配置文件,大部分情况下甚至什么配置都不用写,直接引起 maven 包即可使用. 之前我也仅仅会用的,但是它怎么实现的是没有详细了解,都是通过看别人的文章大概知道了流程,但是这样好像总是记得不是很清楚,所以就打算也自己也输出一份,方便自己将来记忆另外也方便自己查看.因为之前搜索的…
一.关于容器 刚才开始使用spring boot的开发者会有种很直观的感觉,servlet容器“不见了”.之前开发web项目,都是把程序写完后部署到servlet容器(比如Tomcat),但是使用spring boot开发项目,写完程序后直接就能运行了,觉得些许奇怪! 其实呢,这是因为Spring Boot中内嵌了Tomcat.Jetty和Undertow服务器.之所以开发者在默认情况下不需要做任何配置,是因为spring boot提供了一个名为EmbeddedServletContainerA…