Spring Bean 的生命周期
生命周期的概要流程 Spring Bean 的整个生命周期 Google Spring Bean 的生命周期,大多以下图给出的流程作为答案 但是当我第一次看到这个图时,人麻了,“Aware,BeanPostProcessor……这些都是什么啊?而且这么多步骤,太多了,该怎么记啊?”。 其实要记忆该过程,还是需要我们先去理解,本文将从以下两方面去帮助理解 Bean 的生命周期 ...
生命周期的概要流程 Spring Bean 的整个生命周期 Google Spring Bean 的生命周期,大多以下图给出的流程作为答案 但是当我第一次看到这个图时,人麻了,“Aware,BeanPostProcessor……这些都是什么啊?而且这么多步骤,太多了,该怎么记啊?”。 其实要记忆该过程,还是需要我们先去理解,本文将从以下两方面去帮助理解 Bean 的生命周期 ...
动态代理作用 静态代理 要说动态代理,必须先聊聊静态代理。 假设现在项目经理有一个需求:在项目现有所有类的方法前后打印日志。 你如何在不修改已有代码的前提下,完成这个需求? 我首先想到的是静态代理。具体做法是: 1.为现有的每一个类都编写一个对应的代理类,并且让它实现和目标类相同的接口(假设都有) 2.在创建代理对象时,通过构造器塞入一个目标对象,然后在代理对象的方法内部调用目...
Redis 是一个开源的在内存存储键值对数据的存储程序。它可以被用作数据库,缓存,信息暂存,并且支持各种数据结构,例如:字符串,哈希值,列表,集合等等。 Redis 通过 Redis Sentinel 和 Redis 集群中多个 Redis 节点的自动分块处理,提供了高可用性。 这篇文章描述了如何在 Ubuntu 20.04 上安装和配置 Redis。 安装 Redis 在 Ubuntu...
在篇文章,将会描述如何在 Ubuntu 20.04 上安装 Java。 开始之前 有很多不同的 Java 实现。OpenJDK 和 Oracle Java 是最主要的两个 Java 实现,除了 Oracle Java 拥有极少的一些额外特性之外,它们两个基本没有什么不同。 Oracle Java 授权仅仅允许作为非商业软件的使用,例如:个人用途和开发用途。 默认的 Ubuntu 20.0...
依赖 Java 发送邮件依赖 jakarta 项目(原 javaEE)提供的 jakarta.mail 组件, Maven 坐标: <dependency> <groupId>com.sun.mail</groupId> <artifactId>jakarta.mail</artifactId> ...
Redis 简介 一个系统在于数据库交互的过程中,内存的速度远远快于硬盘速度,当我们重复地获取相同数据时,我们一次又一次地请求数据库或远程服务,者无疑时性能上地浪费(这会导致大量时间被浪费在数据库查询或者远程方法调用上致使程序性能恶化),于是有了“缓存”。 Redis 是目前业界使用最广泛的内存数据存储。相比 Memcached,Redis 支持更丰富的数据结构,例如 hashes, li...
同源策略 同源策略定义 1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页”同源” 如果两个 URL 的 protocol、port (en-US) (如果有指定的话)和 host 都相同的话,则这两个 URL 是同源。这个方案也被称为“协议/主机/端口元组”,或者直接...
前言 Springboot跨域问题,是当前主流web开发人员都绕不开的难题。但我们首先要明确以下几点 跨域只存在于浏览器端,不存在于安卓/ios/Node.js/python/ java等其它环境 跨域请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。 之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全...
创建并写文件的五种方式 java中创建文件的五种方法 Files.newBufferedWriter Files.write(Java 7 推荐) PrintWriter File.createNewFile FileOutputStream.write(byte[] b) 管道流 try(管道, 流连接等实现了Closeable接口的类){ //这里使用类...
压缩文件 将一个名为test1.txt的文件压缩到一个名为Compressed.zip的zip文件中。 public class ZipFile { public static void main(String[] args) throws IOException { //输出压缩包 FileOutputStream fos = new...