通过代理实现 AOP 下面演示怎么通过代理实现 AOP。 需要被 AOP 的类: interface Hello{ void sayHello(); void sayBye(); } static class Target implements Hello{ @Override public void sayHello() { System.out.println("Hello World"); } @Override public void sayBy…
通过代理实现 AOP 下面演示怎么通过代理实现 AOP。 需要被 AOP 的类: interface Hello{ void sayHello(); void sayBye(); } static class Target implements Hello{ @Override public void sayHello() { System.out.println("Hello World"); } @Override public void sayBy…
实现 动态代理有两种实现方式: JDK CGLIB JDK 要代理的目标类: interface DoSomething { void doSomething(); } @Slf4j static class Target implements DoSomething { @Override public void doSomething() { log.info("doSomething..."); } } 通过 JDK 创建动态代理: Target target = …
AOP 有三种实现方式: 动态代理(Dynamic Proxy) 编译时织入(Compile Time Weaving,CTW) 加载时织入(Load Time Weaving,LTW) 动态代理 添加 AOP 相关依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </d…
Scope Spring 的 bean 是有作用域(Scope)的: singleton:单例 prototype:原型,每次都获取到新的实例。 request:请求,在一次 HTTP 请求内有效。 session:会话,在一次 HTTP 会话内有效。 application:应用,在一个 Servlet 容器中有效。 默认的作用域是单例。 最后三种作用域都与 Web 应用相关,可以用一个简单的基于 Spring Boot 的 Web 应用观察其创建和销毁。 定义三种不同作用域的 bean: @Scope(WebA…
Aware 接口 Spring 提供一组 Aware 接口,可以利用它们在 bean 中获取容器或 bean 相关的句柄: @ToString @Slf4j static class MyBean implements ApplicationContextAware, BeanNameAware, InitializingBean { private String beanName; private ApplicationContext applicationContext; @Overrid…
用途 ConfigurationClassPostProcessor 前文提到过,bean 工厂的后处理器可以用于处理 bean 定义。比如下面的示例: static class Bean1{} @Configuration @ComponentScan(basePackages = "cn.icexmoon.demo.bean") static class Config{ @Bean public Bean1 bean1(){ return new Bean1(); } } bean…
在前篇中介绍了,Spring 提供了一些 bean 的后处理器(实现了 BeanPostProsessor 接口),用于处理 bean 的依赖注入等。实际上,我们可以通过自定义一个实现了相应接口的后处理器来观察 bean 的生命周期。 Bean 生命周期 创建一个用于打印不同生命周期方法钩子的 bean 后处理器: static class MyBeanPostProcessor implements InstantiationAwareBeanPostProcessor, DestructionAwareBean…
博客更新后意外发现验证码插件失效了,登录不了后台了。好在通过 SSH 删除插件目录的验证码插件就解决了。 翻了一下 WordPress 插件社区,找到了一个适合 6.8.1 版本的验证码插件 hCaptcha for WP。 相对于原来使用的简单的图片验证码,这个验证码使用成熟的机器验证供应商,可以根据网站被攻击的程度提供不同的验证级别来保护网站。 要使用这个插件,需要先在 https://dashboard.hcaptcha.com/ 这个网站注册账号。 然后在 Sites 这个页面设置一个网站: 设置项里可以调…
1.基本类型之间 先看不同类型的基本类型之间的比较: private static void test2(){ int a = 100; long b = 100L; boolean result = b == a; System.out.println(result ? "相等" : "不相等"); } 结果是: 相等 这里实际上进行了隐式类型转换,编译器将 int 类型“提升”为 long 类型后进行比较,相当于: boolean result = b == (long)a; 2.包装类…
图源:ubiq.co 简单的说,视图就是“固化的SQL查询”。 这里看一个简单示例,我们有一个表,保存学生信息: mysql> select * from student limit 10; +-----+---------------+-----------+----------+ | id | average_score | level | name | +-----+---------------+-----------+----------+ | 573 | 27 …
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang