- HttpClient修仙大典:从HTTP小厮到请求天尊的终极飞升指南
五行星辰
业务系统应用技术http网络协议网络
一、筑基篇:初识HttpClient1.1选择你的本命法宝org.apache.httpcomponentshttpclient4.5.13//直接调用java.net.http.HttpClient二、金丹篇:基础HTTP请求2.1GET请求(灵气采集)//Java11+标准库版HttpClientclient=HttpClient.newHttpClient();HttpRequestrequ
- 探索SpringMVC-HandlerAdapter之RequestMappingHandlerAdapter
Evan_L
探索SpringMVCmvcspring
前言在RequestMappingHandlerAdapter的第一篇文章《探索SpringMVC-HandlerAdapter之RequestMappingHandlerAdapter-参数解析》我们从方法调用的角度提出了三个问题。前面两篇分别回答了方法入参、返回值处理这两个问题。而第三个问题则是由异常处理器负责的,不属于HandlerAdapter的内容。因此我们可以深入分析RequestMa
- 对Controler层和biz层进行抽象
期以岁月,使若千秋万岁
javajava
#未抽象之前@Controller@RequestMapping("/base/view")publicclassViewAction{@ResourceprivateViewBizviewBiz;@GetMapping("/queryList").........@GetMapping("/insertList").........}@ServicepublicclassViewBiz{....
- 用python的flask写的一个MQTT中转功能,http的方式发送数据和接收数据
陈钇谷
pythonflaskhttp
需求背景给一个客户对接人脸识别的设备,最后需要通知服务端进行一些消息推送。简单例子#作者陈老师#https://v.iiar.cnimportjsonimportpaho.mqtt.clientasmqttimportrequestsfromflaskimportFlask,requestapp=Flask(__name__)#MQTT配置mq_broker="127.0.0.1"#MQTT测试服
- python写入json文件编码问题_在 Python中使用JSON时需要注意的编码问题
weixin_39619433
在Python中使用JSON时需要注意的编码问题写这篇文章的缘由是我使用reqeusts库请求接口的时候,直接使用请求参数里的json字段发送数据,但是服务器无法识别我发送的数据,排查了好久才知道requests内部是使用json.dumps将字符串转成json的,而json.dumps默认情况下会将非ASCII字符转义,也就是我发送数据中的中文被转义了,所以服务器无法识别.这篇文章虽然是json
- httpx的两个坑(httpx.ReadTimeout; SSL: CERTIFICATE_VERIFY_FAILED)
楠少科技
爬坑pythonhttpx报错
关于python异步网络请求库httpx的两个坑其一:httpx.ReadTimeout实测发现,网络不稳定的情况下,极其容易出现该错误。相对于requests库,httpx库是有默认的超时时间的。参考方案:初始化时将timeout赋值为None例1:client=httpx.AsyncClient(timeout=None)例2:httpx.get(url=url,timeout=None)#默
- 如何使用Python模拟登录微信并进行数据抓取
Python爬虫项目
python微信开发语言selenium爬虫测试工具
第一章:前言随着互联网的快速发展,社交平台上的数据成为了研究和商业应用的重要组成部分。微信作为中国最流行的即时通讯工具,其上存在着大量的社交、商业以及娱乐数据。因此,如何通过编程方式抓取微信上的数据成为了一个备受关注的话题。在本篇文章中,我们将介绍如何使用Python进行模拟登录微信,并通过API或爬虫技术来获取数据。我们将详细讲解使用Selenium和Requests等工具实现模拟登录,解析二维
- 如何使用 Python 超短代码爬取 B 站视频?超详细教程!不需要音视频拼接!
来自星星的坤
python音视频开发语言
B站(Bilibili)是国内最受欢迎的视频平台之一,很多时候我们想下载自己喜欢的视频离线观看,但B站并没有提供直接的下载按钮。这篇文章将带你用Python编写一个爬虫,自动获取B站视频地址并下载它!本文适合有一定Python基础的开发者,如果你是爬虫新手,也可以跟着代码一步步学习!1.准备工作在开始编写爬虫之前,确保你的Python环境已经安装了以下依赖库:pipinstallrequestsr
- 深入解析:使用Python爬取Bilibili视频
kingmax54212008
python音视频开发语言
深入解析:使用Python爬取Bilibili视频引言Bilibili,作为中国领先的年轻人文化社区,拥有海量的视频资源。对于想要下载Bilibili视频的用户来说,手动下载不仅费时费力,而且效率低下。本文将介绍如何使用Python编写一个脚本,自动化地爬取Bilibili上的视频,并将其保存到本地。环境准备在开始之前,请确保你已经安装了以下Python库:requests:用于发送HTTP请求。
- tomcat : 向后台传 json字符串有可能报400错误
直视太阳
jspjavatomcat400错误
原因:有可能是tomat为了安全吧。把一些特殊字符进行了编码比如+会转义成特殊的编码。会导致400错误解决方法:找到config/catalina.properties最后一行,去掉注释#在最后加一个{}#tomcat.util.http.parser.HttpParser.requestTargetAllow=|改为:tomcat.util.http.parser.HttpParser.requ
- java抓取起点小说,并用正则匹配需要数据
直视太阳
java
抓取起点网站内容staticStringgethtml(Stringul){Stringurl=ul;InputStreamis=null;InputStreamReaderisr=null;try{URLu=newURL(url);HttpURLConnectionuc=(HttpURLConnection)u.openConnection();//设置headeruc.setRequestMe
- Nexus Docker 推送提示授权错误
HoneyMoose
eurekaspringcloud云原生
推送DockerImage到Nexus上的提示错误:Unabletopush'zchub-policy-data-service:0.0.1-SNAPSHOT'toregistry'repo-docker.isharkfly.com':unauthorized:accesstotherequestedresourceisnotauthorized问题解决Nexus需要对能够访问Docker仓库的用
- 解决Max retries exceeded with url的问题
程序猿学长
Pythonpython
解决Maxretriesexceededwithurl的问题requests.exceptions.ConnectionError:HTTPSConnectionPool(host='www.baidu.com',port=443):Maxretriesexceededwithurl:(Causedby:python脚本请求url,大量请求报错Maxretriesexceededwithurl解决
- ES6(8) Fetch API 详解
Theodore_1022
ES6es6前端ecmascript开发语言javascript
1.FetchAPI简介fetch是ES6提供的基于Promise的API,用于发送HTTP请求并处理服务器响应数据。与传统的XMLHttpRequest相比,fetch语法更加简洁,使用Promise进行异步处理,避免了回调地狱。1.1fetch()的基本用法fetch(url,options)返回一个Promise,其中:url:请求的地址。options(可选):一个对象,用于设置请求方法、
- 使用 Python 指定内容 爬取百度引擎搜索结果
LIY若依
python百度爬虫
在本篇博客中,我将展示如何使用Python编写一个简单的百度搜索爬虫。这个爬虫可以自动化地从百度获取搜索结果,并提取每个结果的标题和链接。我们将使用requests库来发送HTTP请求,使用BeautifulSoup库来解析HTML内容。需求分析在实现爬虫之前,我们需要明确以下需求:通过构建百度搜索的URL来发送搜索请求。解析百度搜索结果页面,提取每个结果的标题和链接。将搜索结果以列表形式返回,方
- Android开发okhttp添加头部参数
893151960
android开发日记androidokhttpAndroid开发Android教程okhttp添加头部
Android开发okhttp添加头部参数或者是头文件privatestaticclassRequestHeaderInterceptorimplementsInterceptor{@OverridepublicResponseintercept(Chainchain)throwsIOException{Requestoriginal=chain.request();//添加头部信息Request
- 基于Django的信息管理系统-----篮球信息管理系统(python+django+mysql)
梁梁呀呀
笔记djangomysqlpython
导语:初识python,想写一个简单的篮球管理系统。功能:实现对球员等信息的增删改查,以及写到前端界面展示。部分代码:1.对球员信息进行操作defqiuyuan(request):qiuyuans=models.qiuyuan.objects.all()pn=request.GET.get('pn',1)try:pn=int(pn)except:pn=1#搜索keyword=request.GET
- 小程序中的网络请求
转角羊儿
小程序小程序网络
在小程序中,使用wx.request()这个方法来发送网路请求,整个请求的方式和jQuery里面的$.ajax方法是非常相似的。在wx.request()这个方法中,接收一个配置对象,该配置对象中能够配置的项目如下表:关于服务器接口有关服务器接口的配置,需要满足以下两点:要求必须要是https接口https接口对应的域名还必须要在小程序管理平台进行配置【开发】-【开发管理】-【开发设置】下面有一个
- Python数据采集:从入门到实战,代码全解析!
爬虫
在数据分析、市场研究和机器学习等领域,数据采集是不可或缺的一步。Python凭借其强大的库和简洁的语法,成为了数据采集的首选工具之一。今天,就让我们一起深入探索Python数据采集的实战技巧,用代码说话,带你从零开始,快速上手数据采集!️基础环境准备在开始数据采集之前,确保你的Python环境中已经安装了以下必要的库:pipinstallrequestsbeautifulsoup4fake-use
- 数据交互 axios 的使用
weixin_30734435
Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中。##AxiosnpmversionbuildstatuscodecoveragenpmdownloadsgitterchatAxios是一个基于promise的HTTP库,可以用在浏览器和node.js中。Features从浏览器中创建XMLHttpRequests从node.js创建http请求支持PromiseA
- No parameter name specified for argument of type [java.lang.Integer]
ETP过河卒
jenkinsspringmvcant部署
一个运用了springmvc的项目,在eclipsetomcat下能够编译部署。在用ant打包后,在tomcat上部署后,访问action出现了此异常:Noparameternamespecifiedforargumentoftype[java.lang.Integer]这个错误主要是因为action的参数注解默认是debug级别,比如@RequestMapping(value="/securit
- 解决Spring参数解析异常:Name for argument of type XXX not specified
李少兄
#Java技巧SpringBootspringpythonjava
前言在开发SpringBoot应用时,我们常遇到类似java.lang.IllegalArgumentException:Nameforargumentnotspecified的报错。这类问题通常与方法参数名称的解析机制相关,尤其在使用@RequestParam、@PathVariable等注解时更为常见。一、问题现象与报错分析1.1报错场景假设我们有一个控制器方法:@GetMapping("/u
- HOW - Axios 拦截器特性
@PHARAOH
后端请求axios前端
目录Axios介绍拦截器特性1.统一添加Token(请求拦截器)2.处理401未授权(响应拦截器)3.统一处理错误信息(响应拦截器)4.请求Loading状态管理5.自动重试请求(如429过载)6.数据格式转换(响应拦截器)7.记录请求日志(请求拦截器+响应拦截器)总结结论Axios介绍Axios是基于XMLHttpRequest(XHR)和Promise进行封装的HTTP客户端。它的核心实现依赖
- PYQT5+爬虫+图片尺寸处理+钉钉消息推送
姜大大的博客
pythonqt爬虫python
整理一下这些天写的程序,主要是应用pyqt5实现GUI设计,并实现网络爬虫、图片处理,消息推送机器人,excel表格的读写操作等,接合业务逻辑,代码如下:importjsonimportosimporttimeimportsysimportrequestsfromPyQt5importQtCore,QtGui,QtWidgetsfromPyQt5.QtCoreimportQThread,pyqtS
- 解决springboot集成minio报错:The following method did not exist: okhttp3.RequestBody.create([BLokhttp3
DN金猿
springboot组件专题springbootjavaspringminio
报错信息:首先是一条警告提醒:2024-07-1816:19:51.789WARN30592---[restartedMain]ConfigServletWebServerApplicationContext:Exceptionencounteredduringcontextinitialization-cancellingrefreshattempt:org.springframework.be
- RESTful如何传递参数
lgaof65822@gmail.com
restful后端.netcore
文章目录前言一、REST遵循核心原则二、REST的优点和缺点1.优点2.缺点三、常见参数传递方式1)路径参数(PathParameters)2)查询参数(QueryParameters)3)请求体参数(RequestBody)4)表单参数(FormData)5)请求头参数(Headers)6)混合参数传递7)动态参数(DynamicObject)四、关键技术与调试技巧模型绑定控制复杂模型验证处理数
- 一次由特殊字符引发的Minio签名问题排查
梦三辰
问题排查中间件minio问题排查
一、背景测试反馈批量上传大量文件(pdf文件,大小在1-5M)左右,总会出现有文件上传失败情况。。近期线上环境突然出现文件上传失败的问题,错误日志显示:Causedby:io.minio.errors.ErrorResponseException:Therequestsignaturewecalculateddoesnotmatchthesignatureyouprovided.Checkyour
- python写socket代理_python实现tcp代理
weixin_39654917
python写socket代理
1.代理流程图2.实现代码#!usr/bin/python2importsysimportsocketimportthread#handlelocalbufferdefrequest_handler(buffer):returnbuffer#handleremotebufferdefresponse_handler(buffer):returnbuffer#receivedatafromremot
- python tcp协议加代理_python实现tcp代理
Spin.LT
pythontcp协议加代理
1.代理流程图2.实现代码#!usr/bin/python2importsysimportsocketimportthread#handlelocalbufferdefrequest_handler(buffer):returnbuffer#handleremotebufferdefresponse_handler(buffer):returnbuffer#receivedatafromremot
- fastGPT—nextjs—mongoose—团队管理之部门相关api接口实现
慕斯策划一场流浪
前端javascripthtmlfastGPT部门创建fastGPT团队管理fastGPT部门成员更新fastGPT部门成员创建
创建部门或者子部门importtype{NextApiRequest,NextApiResponse}from'next';import{NextAPI}from'@/service/middleware/entry';import{MongoOrgModel}from'@fastgpt/service/support/permission/org/orgSchema';asyncfunction
- Enum 枚举
120153216
enum枚举
原文地址:http://www.cnblogs.com/Kavlez/p/4268601.html Enumeration
于Java 1.5增加的enum type...enum type是由一组固定的常量组成的类型,比如四个季节、扑克花色。在出现enum type之前,通常用一组int常量表示枚举类型。比如这样:
public static final int APPLE_FUJI = 0
- Java8简明教程
bijian1013
javajdk1.8
Java 8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java 8的全新特性。
一.允许在接口中有默认方法实现
Java 8 允许我们使用default关键字,为接口声明添
- Oracle表维护 快速备份删除数据
cuisuqiang
oracle索引快速备份删除
我知道oracle表分区,不过那是数据库设计阶段的事情,目前是远水解不了近渴。
当前的数据库表,要求保留一个月数据,且表存在大量录入更新,不存在程序删除。
为了解决频繁查询和更新的瓶颈,我在oracle内根据需要创建了索引。但是随着数据量的增加,一个半月数据就要超千万,此时就算有索引,对高并发的查询和更新来说,让然有所拖累。
为了解决这个问题,我一般一个月会进行一次数据库维护,主要工作就是备
- java多态内存分析
麦田的设计者
java内存分析多态原理接口和抽象类
“ 时针如果可以回头,熟悉那张脸,重温嬉戏这乐园,墙壁的松脱涂鸦已经褪色才明白存在的价值归于记忆。街角小店尚存在吗?这大时代会不会牵挂,过去现在花开怎么会等待。
但有种意外不管痛不痛都有伤害,光阴远远离开,那笑声徘徊与脑海。但这一秒可笑不再可爱,当天心
- Xshell实现Windows上传文件到Linux主机
被触发
windows
经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下;之前我的做法现在看来好笨好繁琐,不过也达到了目的,笨人有本方法嘛;
我是怎么操作的:
1、打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面;(经常第一步都不顺利,无法挂载Windo
- 类的加载ClassLoader
肆无忌惮_
ClassLoader
类加载器ClassLoader是用来将java的类加载到虚拟机中,类加载器负责读取class字节文件到内存中,并将它转为Class的对象(类对象),通过此实例的 newInstance()方法就可以创建出该类的一个对象。
其中重要的方法为findClass(String name)。
如何写一个自己的类加载器呢?
首先写一个便于测试的类Student
- html5写的玫瑰花
知了ing
html5
<html>
<head>
<title>I Love You!</title>
<meta charset="utf-8" />
</head>
<body>
<canvas id="c"></canvas>
- google的ConcurrentLinkedHashmap源代码解析
矮蛋蛋
LRU
原文地址:
http://janeky.iteye.com/blog/1534352
简述
ConcurrentLinkedHashMap 是google团队提供的一个容器。它有什么用呢?其实它本身是对
ConcurrentHashMap的封装,可以用来实现一个基于LRU策略的缓存。详细介绍可以参见
http://code.google.com/p/concurrentlinke
- webservice获取访问服务的ip地址
alleni123
webservice
1. 首先注入javax.xml.ws.WebServiceContext,
@Resource
private WebServiceContext context;
2. 在方法中获取交换请求的对象。
javax.xml.ws.handler.MessageContext mc=context.getMessageContext();
com.sun.net.http
- 菜鸟的java基础提升之道——————>是否值得拥有
百合不是茶
1,c++,java是面向对象编程的语言,将万事万物都看成是对象;java做一件事情关注的是人物,java是c++继承过来的,java没有直接更改地址的权限但是可以通过引用来传值操作地址,java也没有c++中繁琐的操作,java以其优越的可移植型,平台的安全型,高效性赢得了广泛的认同,全世界越来越多的人去学习java,我也是其中的一员
java组成:
- 通过修改Linux服务自动启动指定应用程序
bijian1013
linux
Linux中修改系统服务的命令是chkconfig (check config),命令的详细解释如下: chkconfig
功能说明:检查,设置系统的各种服务。
语 法:chkconfig [ -- add][ -- del][ -- list][系统服务] 或 chkconfig [ -- level <</SPAN>
- spring拦截器的一个简单实例
bijian1013
javaspring拦截器Interceptor
Purview接口
package aop;
public interface Purview {
void checkLogin();
}
Purview接口的实现类PurviesImpl.java
package aop;
public class PurviewImpl implements Purview {
public void check
- [Velocity二]自定义Velocity指令
bit1129
velocity
什么是Velocity指令
在Velocity中,#set,#if, #foreach, #elseif, #parse等,以#开头的称之为指令,Velocity内置的这些指令可以用来做赋值,条件判断,循环控制等脚本语言必备的逻辑控制等语句,Velocity的指令是可扩展的,即用户可以根据实际的需要自定义Velocity指令
自定义指令(Directive)的一般步骤
&nbs
- 【Hive十】Programming Hive学习笔记
bit1129
programming
第二章 Getting Started
1.Hive最大的局限性是什么?一是不支持行级别的增删改(insert, delete, update)二是查询性能非常差(基于Hadoop MapReduce),不适合延迟小的交互式任务三是不支持事务2. Hive MetaStore是干什么的?Hive persists table schemas and other system metadata.
- nginx有选择性进行限制
ronin47
nginx 动静 限制
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;...
server {...
location ~.*\.(gif|png|css|js|icon)$ {
- java-4.-在二元树中找出和为某一值的所有路径 .
bylijinnan
java
/*
* 0.use a TwoWayLinkedList to store the path.when the node can't be path,you should/can delete it.
* 1.curSum==exceptedSum:if the lastNode is TreeNode,printPath();delete the node otherwise
- Netty学习笔记
bylijinnan
javanetty
本文是阅读以下两篇文章时:
http://seeallhearall.blogspot.com/2012/05/netty-tutorial-part-1-introduction-to.html
http://seeallhearall.blogspot.com/2012/06/netty-tutorial-part-15-on-channel.html
我的一些笔记
===
- js获取项目路径
cngolon
js
//js获取项目根路径,如: http://localhost:8083/uimcardprj
function getRootPath(){
//获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
var curWwwPath=window.document.locati
- oracle 的性能优化
cuishikuan
oracleSQL Server
在网上搜索了一些Oracle性能优化的文章,为了更加深层次的巩固[边写边记],也为了可以随时查看,所以发表这篇文章。
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。(这点本人曾经做过实例验证过,的确如此哦!
- Shell变量和数组使用详解
daizj
linuxshell变量数组
Shell 变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
your_name="w3cschool.cc"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用ba
- 编程中的一些概念,KISS、DRY、MVC、OOP、REST
dcj3sjt126com
REST
KISS、DRY、MVC、OOP、REST (1)KISS是指Keep It Simple,Stupid(摘自wikipedia),指设计时要坚持简约原则,避免不必要的复杂化。 (2)DRY是指Don't Repeat Yourself(摘自wikipedia),特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性、简洁性,并且可能导致代码之间的矛盾。 (3)OOP 即Object-Orie
- [Android]设置Activity为全屏显示的两种方法
dcj3sjt126com
Activity
1. 方法1:AndroidManifest.xml 里,Activity的 android:theme 指定为" @android:style/Theme.NoTitleBar.Fullscreen" 示例: <application
- solrcloud 部署方式比较
eksliang
solrCloud
solrcloud 的部署其实有两种方式可选,那么我们在实践开发中应该怎样选择呢? 第一种:当启动solr服务器时,内嵌的启动一个Zookeeper服务器,然后将这些内嵌的Zookeeper服务器组成一个集群。 第二种:将Zookeeper服务器独立的配置一个集群,然后将solr交给Zookeeper进行管理
谈谈第一种:每启动一个solr服务器就内嵌的启动一个Zoo
- Java synchronized关键字详解
gqdy365
synchronized
转载自:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。
同步机制可以使用synchronized关键字实现。
当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。
当s
- js实现登录时记住用户名
hw1287789687
记住我记住密码cookie记住用户名记住账号
在页面中如何获取cookie值呢?
如果是JSP的话,可以通过servlet的对象request 获取cookie,可以
参考:http://hw1287789687.iteye.com/blog/2050040
如果要求登录页面是html呢?html页面中如何获取cookie呢?
直接上代码了
页面:loginInput.html
代码:
<!DOCTYPE html PUB
- 开发者必备的 Chrome 扩展
justjavac
chrome
Firebug:不用多介绍了吧https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench
ChromeSnifferPlus:Chrome 探测器,可以探测正在使用的开源软件或者 js 类库https://chrome.google.com/webstore/detail/chrome-sniffer-pl
- 算法机试题
李亚飞
java算法机试题
在面试机试时,遇到一个算法题,当时没能写出来,最后是同学帮忙解决的。
这道题大致意思是:输入一个数,比如4,。这时会输出:
&n
- 正确配置Linux系统ulimit值
字符串
ulimit
在Linux下面部 署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用 其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进
- hibernate调用返回游标的存储过程
Supanccy2013
javaDAOoracleHibernatejdbc
注:原创作品,转载请注明出处。
上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程。
此此扁博文的存储过程的功能相当于是jdbc调用select 的作用。
1,创建oracle中的包,并在该包中创建的游标类型。
---创建oracle的程
- Spring 4.2新特性-更简单的Application Event
wiselyman
application
1.1 Application Event
Spring 4.1的写法请参考10点睛Spring4.1-Application Event
请对比10点睛Spring4.1-Application Event
使用一个@EventListener取代了实现ApplicationListener接口,使耦合度降低;
1.2 示例
包依赖
<p