![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
wending-Y
这个作者很懒,什么都没留下…
展开
-
Java查看线上对象的变量值
动态取线上spring 对象字段值原创 2024-05-27 21:40:30 · 278 阅读 · 0 评论 -
spring aop 内部引用失效分析
深入理解glibc动态代理原创 2024-05-22 22:28:26 · 331 阅读 · 1 评论 -
nginx + spring gateway+spring 服务
文章目录背景架构配置nginxgateway配置gateway pom.xml服务配置服务注册到Nacos服务请求总结背景实践配置一套nginx +gateway+微服务的架构架构配置nginx#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs原创 2022-03-20 19:11:38 · 4920 阅读 · 0 评论 -
Java 中Mockito和Spring Mock
前言开发中自测时,经常需要和其它同学开的接口联调,有时没有接品没有数据,可以mock只关注自己的代码Mockitoreturndonothingverifyanswerreset@RunWith(MockitoJUnitRunner.class)public class TestMo { @Mock HashMap<String, String> map; @Mock User user; @Test public vo原创 2021-10-13 22:44:30 · 364 阅读 · 0 评论 -
springboot application.yaml文件读取
文章目录背景YamlPropertySourceLoaderConfigDataEnvironment背景来看下配置文件是如何读取的YamlPropertySourceLoader@Override public List<PropertySource<?>> load(String name, Resource resource) throws IOException { if (!ClassUtils.isPresent("org.yaml.snakeyaml.Ya原创 2021-03-14 22:35:16 · 456 阅读 · 1 评论 -
spring @Postconstruct执行时机
文章目录背景AbstractAutowireCapableBeanFactoryInitDestroyAnnotationBeanPostProcessor总结背景@Postconstruct 主要是用来初始化函数注解AbstractAutowireCapableBeanFactory这里有一个beanpostprocessor@Override public Object applyBeanPostProcessorsBeforeInitialization(Object existingBe原创 2021-03-14 11:02:12 · 4130 阅读 · 0 评论 -
spring @value 实现原理
文章目录背景实例类AutowiredAnnotationBeanPostProcessor 类DefaultListableBeanFactoryPropertyPlaceholderHelperPropertySourcesPropertyResolver背景@Value 可以自动注入属性,来看下这里是如何实现的实例类@Componentpublic class User { @Value("${address}") String address;}AutowiredA原创 2021-03-13 22:52:12 · 1779 阅读 · 0 评论 -
spring 自定义让@Value解析到
文章目录背景实现原理总结@Value 可以给字段赋值背景@Value通常与@PropertySource(value = “db.properties”) 组合使用读取配置注入参数,那如果我们的值是其它存储,如何才能自动赋值实现原理实现很简单//自动注入此对象 @Autowired private Environment environment; @PostConstruct public void init() { //拿到些对原创 2021-03-11 23:15:17 · 459 阅读 · 0 评论 -
spring ApplicationContext
文章目录启动过程1.prepareRefresh2.准备BeanFactory3.设置Beanfactory4.注册BeanFactoryPostProcessor5.注册BeanPostProcessor6.国际化处理7.事件广播器8.注册listener9.实现化bean10.结束ApplicationContext 这个是带有上下文的容器启动过程以ClassPathXmlApplicationContext为例public void refresh() throws BeansExcep原创 2021-03-07 23:10:25 · 144 阅读 · 0 评论 -
spring bean注解
文章目录Spring的bean注解分析@Component的实现Spring的bean注解这4个注解都能把类扫描成bean@Service@Configuration@Controller@Component分析分析前三个注解的实现发现实现都是@Component的实现@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented//都引入了此注解@Componentpublic @inter原创 2021-03-01 23:14:43 · 167 阅读 · 0 评论 -
spring 自定义注解,动态注入Bean
文章目录背景ImportBeanDefinitionRegistrar1.定义注解2.启动注解3.实现接口4.扫描器5.使用Bean6.使用注解7.启动类总结背景@Configuration 注解的类会被spring自动的扫描注入为Bean,如果想自己定义一个注解实现相同的功能如何来实现ImportBeanDefinitionRegistrar熟悉spring源码的同学应该知道,注册bean实际上就是注册beandefinition这个类刚好有接口可以实现default void regis原创 2021-02-20 20:01:31 · 5120 阅读 · 1 评论 -
BeanPostProcessor 和 BeanFactoryPostProcessor
BeanFactoryPostProcessor对读取到的所有bean可以进行修改,在这之前已经拿到了所有的Bean定义,不管是xml还是注解@Componentpublic class BeanFactoryPostProcessorImp implements BeanFactoryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFact原创 2020-11-19 23:54:00 · 255 阅读 · 0 评论 -
Spring AOP 源码解读
应用场景公共模块抽象出来,简单的AOP功能编织到模块中核心技术实现动态代理,相关的拦截器都配置到了动态对象里JDK 动态代理只能代理实现接口的类invoke里封装了aop的实现CGLIB 字节码增强技术可以直接代理类对callback回调设置中,通过DynamicAdvisedInterceptor拦截器来实现AOP功能的源码解析以JDK动态代理为例JdkDynamicAopProxy@Override public Object invoke(Object proxy, Met原创 2020-05-23 14:34:26 · 174 阅读 · 0 评论 -
再看AOP,Where,When ,What
AOP刚开始学习Java的时候,对aop的概念,看不很明白,今天再来看AOP,现在能想其实和动态代理来看也差不多,都是隐式的给你加些功能图解切面 aspect 直白点就是要在切点插入的东西,就是what切点 pointcut 就在要什么地方 ,就是 where代码精通类public class SampleAdder { public SampleAdder() { } public int add(int a, int b) { System.out.原创 2020-05-19 23:21:04 · 238 阅读 · 0 评论 -
Spring IOC实现
IOC实现今天我们来看下IOC的实现原理示例代码public class Provider { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml"); context.start(); System原创 2020-05-18 00:00:31 · 171 阅读 · 0 评论