spring
文章平均质量分 63
百里度
这个作者很懒,什么都没留下…
展开
-
从spring容器中动态添加或移除bean
public class DemoUtil { @Autowired private ApplicationContext applicationContext;//添加bean public void addBean(String beanName, Class<?> beanClass) { BeanDefinitionRegistry beanDefinitionRegistry = (BeanDefinitionRegistry) appl原创 2022-05-29 18:24:57 · 2266 阅读 · 0 评论 -
BeanFactory 和FactoryBean的区别
一、BeanFactory 和FactoryBean的区别BeanFactory: 是 IOC 容器,并且提供方法支持外部程序对这些 bean 的访问,在程序启动时 根据传入的参数产生各种类型的 bean,并添加到 IOC容器(实现 BeanFactory 接口的类) 的 singletonObject 属性中。1、负责生产和管理bean的一个工厂。2、事IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象的依赖。3、多种实现:如 DefaultListableBea原创 2022-05-29 17:50:47 · 3086 阅读 · 0 评论 -
MyBatis缓存机制
一级缓存在应用运行过程中,我们有可能在一次数据库会话中,执行多次查询条件完全相同的SQL,MyBatis提供了一级缓存的方案优化这部分场景,如果是相同的SQL语句,会优先命中一级缓存,避免直接对数据库进行查询,提高性能每个SqlSession中持有了Executor,每个Executor中有一个LocalCache。当用户发起查询时,MyBatis根据当前执行的语句生成MappedStatement,在Local Cache进行查询,如果缓存命中的话,直接返回结果给用户,如果缓存没有命中的话,查询数据库原创 2021-12-19 18:47:41 · 106 阅读 · 0 评论 -
Spring 如何解决循环依赖的问题
一、什么是循环依赖 是两个或两个以上对象互相引用,即A依赖B,B依赖C,C又依赖A例如:@servicepublic class A { private B b; @Autowired public void setB(B b) { this.b= b; } } @servicepublic class B { private A a; @Autowired public void原创 2021-12-19 14:12:18 · 1443 阅读 · 0 评论 -
BeanFactory和FactoryBean的区别
一、BeanFactory和FactoryBean的区别BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似1、 BeanFactoryBeanFactory定义了IOC容器的最基本形式,并提供了IO原创 2021-12-13 22:06:39 · 1485 阅读 · 0 评论 -
事务失效、AOP切入等同类调用方法问题解决
一、切面问题:在开发中会遇到,当在Service中定义了一个方法并且切入之后,从Controller里面调用该方法可以实现切入,但是当在同一个Service中实现另一方法并调用改方法时却无法切入例如同一个类中方法A,调用它的方法B,这时B方法是无法切入的。事务问题:同一个类中方法A没有事务,调用它的方法B,B有事务。这是事务失效。其实原因很简单,Spring在扫描Bean的时候会自动为标注了@Transactional注解的类生成一个代理类(proxy),当有注解的方法被调用的时候,实际上是代原创 2021-04-26 10:33:35 · 378 阅读 · 0 评论 -
sping事务生效与失效问题分析
一般我们使用@Transactional注解设置事务@Transactional修饰在方法上事务生效 @Transactional public void saveUser(User user) { userRespository.save(user); }方法一有事务,调用自己类或其他类的无事务方法,事务生效 @Transactional public void saveUser(User user) { test(user);原创 2021-04-26 10:14:57 · 184 阅读 · 0 评论 -
mybatis源码分析3
一、sql执行流程根据sql语句使用xml进行维护或者在注解上配置,sql语句执行的入口分为两种: 第一种,调用org.apache.ibatis.session.SqlSession的crud方法比如selectList/selectOne传递完整的语句id直接执行; 第二种,先调用SqlSession的getMapper()方法得到mapper接口的一个实现,然后调用具体的方法。除非早期,现在实际开发中,我们一般采用这种方式。我们看下第一种方式执行selectOne方法public <原创 2020-11-30 19:52:32 · 95 阅读 · 0 评论 -
mybatis源码分析2
一、mapper加载与初始化前面说过mybatis mapper文件的加载主要有两大类,通过package加载和明确指定的方式。一般来说,对于简单语句来说,使用注解代码会更加清晰,然而Java注解对于复杂语句比如同时包含了构造器、鉴别器、resultMap来说就会非常混乱,应该限制使用,此时应该使用XML文件我们先来回顾一下通过注解配置的典型mapper接口:@Select("select *from User where id=#{id} and userName like #{name}")pu原创 2020-11-30 19:09:40 · 178 阅读 · 0 评论 -
mybatis源码分析1
一、先从一个示例开始,单独使用mytatis的用法public class MybatisTest{ public static void main(String[] args) { String resource = "org/mybatis/example/Configuration.xml"; Reader reader; try { reader = Resources.getResourceAsReader(reso原创 2020-11-30 15:43:30 · 109 阅读 · 0 评论 -
springMVC的执行流程
一、执行流程图1、一个请求匹配前端控制器 DispatcherServlet 的请求映射路径(在 web.xml中指 定), WEB 容器将该请求转交给 DispatcherServlet 处理2、DispatcherServlet 接收到请求后, 将根据 请求信息 交给 处理器映射器 (HandlerMapping)3、HandlerMapping 根据用户的url请求 查找匹配该url的 Handler,并返回一个执行链4、DispatcherServlet 再请求 处理器适配器(Handle原创 2020-08-01 15:40:33 · 121 阅读 · 0 评论 -
Spring bean生命周期
Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。一、生命周期流程图:Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关键点。原创 2020-08-01 10:41:39 · 98 阅读 · 0 评论