
Spring
文章平均质量分 74
Spring
WannaRunning
这个作者很懒,什么都没留下…
展开
-
基于Advisor实现AOP
Spring中给PointcutAdvisor接口提供一个一个默认的实现类DefaultPointcutAdvisor和Pointcut接口默认实现类AspectJExpressionPointcut,如果不想自己在定义切面和切点实现类可以直接使用默认实现。@Bean//使用默认的切面advisor实例//使用默认的切点实例//配置自定义的通知实例}}//只需额外自定义通知实现类即可@Override。原创 2022-08-20 17:11:09 · 557 阅读 · 0 评论 -
Spring中获取环境属性
如果在某个类里面想要使用spring的一些东西,就可以通过实现XXXAware接口告诉spring。比如在实现ApplicationContextAware接口的类中重写接扣的setApplicationContext(ApplicationContext applicationContext)就可以在Bean中使用ApplicationContext。EnvironmentCapable这个接口可以提供Environment,所以EnvironmentCapable唯一的方法是getEnviron原创 2022-04-22 20:28:39 · 1473 阅读 · 0 评论 -
Spring中的BeanDefinitionRegistryPostProcessor
目录BeanDefinitionRegistryPostProcessor执行时机BeanDefinitionRegistryPostProcessor使用场景这篇要写的BeanDefinitionRegistryPostProcessor接口是上一篇写的BeanFactoryPostProcessor接口的子接口,之前写到BeanFactoryPostProcessor接口是在bd加载到BeanFactory后且Bean初始化之前执行,可以对bd的属性信息进行修改操作,当BeanFactory原创 2021-12-25 17:22:53 · 807 阅读 · 0 评论 -
JDK和Spring中的SPI机制
SPI(Service Provider Interface)是一种服务提供发现机制,为框架提供良好扩展性的机制。这个机制最大的优点就是无须在代码里指定,进而避免了代码污染,实现了模块的可拔插。JDK的SPI机制在项目的classpath下的META-INF\services目录里创建一个以服务接口命名的文件,内容是实现类的全命名。例如数据库驱动jar包中,文件内容就是oracle.jdbc.OracleDriver这个驱动类Spring的SPI机制项目的classpath下的.原创 2021-01-29 15:56:29 · 277 阅读 · 0 评论 -
Spring加载ApplicationContext方式
1.ApplicationContext 应用上下文,加载Spring 框架配置文件 加载classpath: new ClassPathXmlApplicationContext("applicationContext.xml"); 加载磁盘路径:new FileSystemXmlApplicationContext("applicationContext.xml");2.使原创 2018-01-26 15:40:27 · 1062 阅读 · 0 评论 -
Spring中的BeanPostProcessor
背景:项目中使用了注解加切面实现某些数据接口的缓存,想把项目中使用了缓存的接口及信息可视化,便于管理查看。这个功能实现的话大概就是解析接口方法上的注解,加入统一管理的集合信息中。但是一般程序中只有访问到方法的时候才能主动做解析,而且多次访问会重复解析,所以考虑在项目启动时就遍历Bean解析这些注解的方法。为了实现上面这个功能,就使用了BeanPostProcessor接口。Spring中的BeanPostProcessor在实例化过程处于的位置分是前置处理和后置处理,对应的BeanPostPro原创 2021-12-18 18:02:01 · 780 阅读 · 0 评论 -
Spring中的BeanFactoryPostProcessor
目录BeanFactoryPostProcessor执行原理BeanFactoryPostProcessor使用场景BeanFactoryPostProcessor这个接口是用来定义beanFactory的后置处理器的,该接口的实例会在BeanFactory标准初始化之后调用,这个时机点bean的定义信息已经保存加载到beanFactory中,但是bean实例其实还未创建。之前文章Spring中的BeanPostProcessor_WannaRunning的博客-优快云博客 写的Bea..原创 2021-12-25 16:35:39 · 730 阅读 · 0 评论 -
initializingbean接口的用途
initializingbean接口只有一个afterPropertiesSet方法,实现了这个接口的类在初始化Bean时会执行这个方法。所以这个接口的用途就是用来实现初始化数据用的。public interface InitializingBean { void afterPropertiesSet() throws Exception;}那么就有一个疑问。static块不好用么干嘛还要多实现一个接口呢?static只能对当前类中的静态成员进行操作,加入类成员变量不能是静态的呢?原创 2020-12-17 18:09:03 · 782 阅读 · 0 评论 -
分析Spring单例Bean初始化和循环依赖解决方式
Spring IoC 容器会在运行时检测到构造函数注入循环引用,并抛出 BeanCurrentlyInCreationException。Spring 会自动解决基于 setter 注入的循环依赖,所以开发中可以通过使用 setter 注入替代构造函数注入的方式避免循环依赖的异常问题。但是通常我们都是都使用@Autowired注解来注入属性,@Autowired 是通过反射进行赋值的,分析一下看 Spring 是如何解决循环依赖的。单例Bean的创建Spring容器中默认Bean都是单例的,简单..原创 2021-01-27 18:19:44 · 296 阅读 · 0 评论 -
Mybatis和Spring整合之MapperScannerConfigurer(mapper接口可以直接调用的原因)
可以使用一个 MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean。没 有 必 要 去 指 定 SqlSessionFactory 或 SqlSessionTemplate , 因 为 MapperScannerConfigurer 将会创建 MapperFactoryBean...原创 2018-06-28 14:14:53 · 1370 阅读 · 0 评论 -
浅谈Mybatis在Spring整合后的执行原理和一级缓存管理
Spring整合Mybatis的方式是通过SqlSessionTemplate创建sqlSession代理对象执行CRUD操作。MapperProxy类MapperProxy#invoke 这个方法是Mapper接口执行方法的入口。关键逻辑在最后一处代码,调用了MapperMethod类的execute方法public class MapperProxy<T> implements InvocationHandler, Serializable { private sta原创 2021-08-05 23:40:18 · 237 阅读 · 1 评论 -
Spring整合MyBatis后一级缓存的使用
Mybatis的一级缓存是sqlSession级别的,在不进行Insert,Update操作的情况下,使用同一sqlsession下的多次相同查询会使用缓存结果。Spring整个MyBatis后与Mybatis单独使用有所区别Spring整合Mybatis后,通过SqlSessionTemplate创建sqlSession代理对象,默认每次查询都是创建新的sqlSession对象,查询执行结束后在finally中关闭代理sqlSession。Spring整合Mybatis中,默认情况下一级缓存原创 2021-08-05 21:02:32 · 402 阅读 · 2 评论 -
spring配置文件中引用外部的properties文件方式
要在spring的xml中引用properties文件中定义的属性,比如配置数据源等需要修改的地方。<bean id="dataSource" class="${dataSource}"> <!-- 这些配置Spring在启动时会去conn.properties中找 --> <property name="driverClass" value="${driv...原创 2018-06-27 16:24:53 · 6087 阅读 · 0 评论 -
Spring配置文件中的注解
<context:component-scan/>是告诉Spring 来扫描指定包下的类,并注册被@Component,@Controller,@Service,@Repository等注解标记的组件。注意的一点是使用<context:component-scan/>后,是可以代替<context:annotation-config/>这个配置实现对@Autow...转载 2018-07-10 16:46:03 · 304 阅读 · 0 评论 -
Spring中@Enable功能开关注解的实现
目录@Import注解驱动实现(@Import+@Configuration)接口驱动实现(@Import+自定义ImportSelector接口实例)自定义功能开关注解经常会用到Spring项目中@EnableXXX这种注解,都是用来启用某种功能,这种注解类似于一种开关,加了这个注解,就能使用某些功能。例如@EnableAsync、@EnableScheduling 等注解。Srping实现Enable模块驱动的方法大致分为两类,一种是注解驱动实现配置,另一种是接口驱动实现配置..原创 2020-12-18 11:19:10 · 2035 阅读 · 0 评论 -
SpringMVC原理
SpringMVC框架包括:一个中心,三大组件前端控制器DispatcherServlet处理器映射器HandlerMapping处理器适配器HandlerAdapter视图解析器View resolver1、用户发起请求,请求到DispatcherServlet前端控制器DispatcherServlet(中央调度)原创 2018-01-24 14:55:16 · 211 阅读 · 0 评论 -
Spring中bean的注入(注解形式)
Spring为此提供了四个注解,这些注解的作用与上面的XML定义bean效果一致,在于将组件交给Spring容器管理。组件的名称默认是类名(首字母变小写),也可以自己修改: @Component:当对组件的层次难以定位的时候使用这个注解 @Controller:表示控制层的组件 @Service:表示业务逻辑层的组件 @Repository:表示数据访问层的原创 2018-01-26 15:58:24 · 831 阅读 · 0 评论 -
springMVC参数绑定——@RequestParam和@PathVariable注解
@RequestMapping("/list") public String test(@RequestParam Long parentId) { }@RequestMapping("/list") public String test( Long parentId) { }第一种必须带有参数,也就是说你直接输入localhost:8080/list 会报错 不会执行方法 ...转载 2018-01-24 11:57:40 · 577 阅读 · 0 评论 -
Spring中bean的注入方式(xml文件配置)
Spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过Spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。 依赖注入的另一种说法是”控制反转”。通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员。而控制反转是指new实例工作不由我们程序员来做而是交给Spring容器来做。Spring通过xml进行IOC配置的方式如下: 1.set方法注入...原创 2018-01-26 15:51:17 · 3081 阅读 · 0 评论