spring
文章平均质量分 63
看山也看水
这个作者很懒,什么都没留下…
展开
-
Spring Boot 中实现代理
功能:定义一个功能,使指定的方法执行前后输出日志信息。1、定义一个注解,添加的方法上具有该功能,或者添加到类上,类下的所有方法都具有该功能@Target( {ElementType.TYPE, ElementType.METHOD })@Retention(RetentionPolicy.RUNTIME)public @interface LogAround {}2、实现PointCut接口,找出标注注解的方法或类// 这里是直接继承了一个便捷基类,实现 match 方法public c原创 2021-08-13 18:51:00 · 1721 阅读 · 0 评论 -
Spring 的 SmartInitializingSingleton 接口
在查看 Application 的refresh 方法中,最后实例化所有的bean,其中单独处理了SmartInitializingSingleton ,记录下。一、源码相关 // DefaultListableBeanFactory // 确保所有非延迟初始单例都实例化。 @Override public void preInstantiateSingletons() throws BeansException { if (logger.isTraceEnabled()) {原创 2021-04-13 18:06:21 · 640 阅读 · 0 评论 -
spring 中 ApplicationContext 的 refresh 方法做了什么
refresh 方法可以说是Spring中核心的一个方法了,通过这个方法可以获取bean的定义、创建添加bean到spring容器中一个其它扩展功能。记录下相关内容。有个问题:refresh方法为什么要叫 refresh,其实从下文中就可以看出来为什么要叫refresh。方法文档说明加载或刷新配置的持久化表示形式,这个配置可以是java 代码的配置,也可以是xml文件、properties文件一个关系型数据库样式或者其它文件格式。由于这是一种启动方法,因此,如果失败,则应销毁已创建的单例,以避免悬挂原创 2021-04-13 14:39:07 · 1136 阅读 · 0 评论 -
Spring 在 META-INF 下放了哪些文件
待完成。。。spring.factoriesspring-autoconfigure-metadata.propertiesspring.handlers原创 2021-04-12 15:56:36 · 571 阅读 · 0 评论 -
Spring - BeanPostProcessor 接口
最近在查看Spring Boot启动源码,学习重要的 AbstractApplicationContext 中refresh() 方法,发现其中有个关于 bean 创建时拦截的知识点。一、接口定义先查看 BeanPostProcessor接口定义。// 允许自定义修改一个bean 的实例化的工厂钩子// 注册:ApplicationContext 获取 BeanPostProcessor 的 bean,并且应用于之后的所有 bean 的创建// 排序:BeanPostProcessor 根据实现原创 2021-04-08 12:44:26 · 200 阅读 · 0 评论 -
Spring 中的 Aware 相关接口
查看Spring相关源码,会发现很多类都实现了各种 xxxAware 接口。为什么实现 Aware 接口,作用是什么?先看Aware 接口的文档说明简单翻译一下,实现Aware接口的bean可以被Spring 容器通过回掉方式处理,但是这个接口只是一个标记接口,类似于java.io.Serializable 用于标记对象可序列化,java.util.RandomAccess 表明支持快速访问。需要使用子接口来完成功能。继续看下 Aware接口的子接口有哪些有两个比较熟悉的子接口,Applicat原创 2021-03-31 11:17:51 · 204 阅读 · 0 评论 -
SpringBoot项目获取ApplicationContext
直接使用@Autowired注入@Autowiredprivate ApplicationContext ctx;实现ApplicationContextAware接口,重写setApplicationContext方法(推荐)@Componentpublic class ApplicationContextProvider implements ApplicationContextA...原创 2019-08-28 17:15:31 · 337 阅读 · 0 评论 -
Spring Cloud简单笔记
spring boot下的配置文件application.yaml中属性spring.application.name=xxx在spring cloud中会被注册为服务名高可用:减少不提供服务的时间1. 服务治理主要用来实现各个微服务实例的自动化注册与发现 [1-39]服务注册在服务治理框架中,会有一个注册中心,每个服务单元向注册中心登记自己提供的服务。通过注册中心互相注册可组成高可用集群。服务发现在服务治理框架下,服务间的调用不再通过具体指定的实例地址来实现,而是通过服务名发起请求.原创 2021-03-30 14:36:14 · 544 阅读 · 0 评论 -
SpringBoot简单使用笔记
项目结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KefEFxpz-1617086101760)(./SpringBoot项目结构.bmp)]SpringBoot默认两种配置文件方式 .properties和 .yml,其中properties配置文件的优先级高于 .yml入口类需要放在包的最外层,以便能够扫描到所有子包中的类@SpringBootApplication 是一个组合注解,包含 @EnableAutoConfiguration、@..原创 2021-03-30 14:35:12 · 352 阅读 · 0 评论 -
MyBatis cache-ref @CacheNamespaceRef
查看关于mybatis中cache相关内容,发现其中有一个cache-ref的信息。了解下具体作用。这里 cache-ref 等同于 @CacheNamespaceRef,cache-ref是mapper的xml文件中标签,@CacheNamespaceRef是 mapper接口的注解。先查看官方文档介绍。表明在mapper接口中既使用了注解,又使用了xml两种方式。那么接口就不会使用二级缓存。需要使用 cache-ref 指定namespace来指定。待完成…...原创 2021-03-19 17:51:17 · 987 阅读 · 0 评论 -
Mybatis 拦截器原理查看和使用方法
Mybatis中Mapper接口注册到Spring容器中的Bean是通过MapperProxyFactory类中的动态代理实现。而Mapper中具体接口方法对应MapperMethod实例,MapperMethod中执行又执行到了SqlSessionTemplate,SqlSessionTemplate 中委托给自己的一个SqlSession动态代理类,SqlSession实例是由sessionFactory的指定执行器的openSession方法创建。这里开始从代码查看。DefaultSqlSessi原创 2021-03-19 13:06:07 · 720 阅读 · 0 评论 -
Mybatis-Spring:从源码上简单查看启动执行全过程
相关依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version></dependency>通过MATA-INF目录下的这两个文件进行自动装配。这两个文件如何自动装配,不是本原创 2021-03-17 17:45:26 · 213 阅读 · 0 评论 -
通过源码简单查看@FeignClient注解如何实现微服务间请求
FeignClient实现服务间请求1、EnableFeignClients通过@Import注解导入FeignClientsRegistrar@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)public @interface EnableFeignClients { //...}2、FeignClientsRegi原创 2021-03-05 16:50:02 · 546 阅读 · 0 评论