spring
沙漠662
自学javaEE
展开
-
spring循环依赖
spring循环依赖1.创建A之前 加入singletonsCurrentlyInCreation集合2.创建A之后 给A赋值之前 将A加入三级缓存 2.1.赋值会去找B,创建B,然后加入singletonsCurrentlyInCreation集合 2.1.1.创建B之后 给B赋值之前 将B加入三级缓存 2.1.2.给B赋值,B去找A的时候,A的一级缓存没有>A的二级缓存>A的三级缓存(找到了)>将A从三级缓存移入二级缓存 2....原创 2022-05-04 13:47:41 · 605 阅读 · 0 评论 -
BeanDefinitionRegistryPostProcessor
BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor方法:postProcessBeanDefinitionRegistry在所有bean定义信息将要被加载,bean实例还未创建的,所以会在BeanFactoryPostProcessor的方法之前执行//BeanDefinitionRegistry Bean定义信息的保存中心,//以后BeanFactory就是按照BeanDefinitionReg..原创 2021-03-19 18:02:26 · 284 阅读 · 0 评论 -
BeanFactoryPostProcessor
BeanPostProcess:bean后置处理器,bean创建对象初始化前后进行拦截工作的BeanFactoryPostProcessor:beanFactory的后置处理器在BeanFactory标准初始化之后调用 来定制和修改BeanFactory的内容所有的bean定义已经保存加载到beanFactory,但是bean的实例还未创建BeanFactoryPostProcessor原理1.ioc容器创建2.// Invoke factory proce...原创 2021-03-19 16:46:50 · 157 阅读 · 0 评论 -
@Autowired
package com.atguigu.bean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;//默认加在ioc容器中的组件,容器启动会调用无参构造器创建对象,再进行初始化赋值等操作@Componentpublic class Boss { private Car car; //构造器要用的组件,都是从容器.原创 2021-03-19 15:58:43 · 96 阅读 · 0 评论 -
BeanPostProcessor说明
BeanPostProcessor.postProcessBeforeInitialization* 初始化:* 对象创建完成,并赋值好,调用初始化方法。。。* BeanPostProcessor.postProcessAfterInitialization* 销毁:* 单实例:容器关闭的时候* 多实例:容器不会管理这个bean;容器不会调用销毁方法;遍历得到容器中所有的BeanPostProcessor;挨个执行beforeInitializ...原创 2021-03-16 16:18:20 · 131 阅读 · 0 评论 -
SpringAOP AspectJAutoProxyCreator的创建
Spring容器启动的时候调用1.注册后置处理器 用于拦截bean的创建 (registerBeanPostProcessors)2.获取所有已经定义了的后置处理器String[] postProcessorNames = beanFactory.getBeanNamesForType(BeanPostProcessor.class, true, false);org.springframework.aop.config.internalAutoProxyCreator =Annotat原创 2021-02-03 15:39:06 · 153 阅读 · 0 评论 -
Spring AOP 创建代理对象
AnnotationAwareAspectJAutoProxyCreator【InstantiationAwareBeanPostProcessor】 的作用:1.创建对象之前调用 调用postProcessBeforeInstantiation判断当前bean是否在advisedBeans中(保存了所有需要增强bean) 2.isInfrastructureClass(beanClass)判断当前bean是否是基础类型的Advice、Pointcut、Advisor、AopInf...原创 2021-02-01 18:22:18 · 414 阅读 · 0 评论 -
Spring AOP 拦截器链执行
原创 2021-01-29 19:00:29 · 301 阅读 · 0 评论 -
SpringAOP 拦截器链
3)、目标方法执行 ; * 容器中保存了组件的代理对象(cglib增强后的对象),这个对象里面保存了详细信息(比如增强器,目标对象,xxx); * 1)、CglibAopProxy.intercept();拦截目标方法的执行 * 2)、根据ProxyFactory对象获取将要执行的目标方法拦截器链; * List<Object> chain = this.advised.getInterceptorsAndDynamicInterceptionAdvice(metho.原创 2021-01-29 16:41:11 · 346 阅读 · 0 评论 -
快速失败(Fail Fast) Spring Validation
@Beanpublic Validator validator() { ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class) .configure() // 快速失败模式 .failFast(true) .buildValidatorFactory(); return valida.原创 2020-08-13 14:37:18 · 2810 阅读 · 1 评论 -
RabbitTemplate
@Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, MessageConverter messageConverter) { RabbitTemplate ra...原创 2019-10-09 10:56:29 · 1040 阅读 · 0 评论 -
SpringAOP源码分析
1.根据注解会知道 这个注解会向SpringIOC容器注入一个bean2.在registerBeanProcessors(beanFactory)中创建AOP注解注入的这个bean3.这个bean是一个后置处理器 会拦截目标类的 实例化4.在目标类实例化后 会在返回一个 cglib或jdk动态代理的代理对象放入springioc容器中5.执行目标方法时 是一个链式调用 先...原创 2019-08-12 13:47:42 · 132 阅读 · 0 评论 -
两个事务提交
springboot spring mybatis mysql一个事务执行update语句 当这个事务还没有执行完成时,在另个一事务实行update语句 两条update语句是一样的第一个执行update的事务还没有提交的时候 第二个事务执行到update语句的时候会等待 应该是锁表了 所有不会出现什么异常情况在此记录一下...原创 2019-04-16 09:24:50 · 813 阅读 · 0 评论 -
@Transactional 主键注意事项
1.抛出非RuntimeException异常时 事务可以提交@Transactional public void insertUser() throws FileNotFoundException{ //抛出FileNotFoundException FileInputStream file = new FileInputStream(new File("D://")); ...原创 2019-03-12 15:17:38 · 421 阅读 · 0 评论 -
@EnableTransactionManagement源码
@EnableTransactionManagement默认 AdviceMode mode() default AdviceMode.PROXY;所有会给容器导入两个组件:AutoProxyRegistrar,ProxyTransactionManagementConfiguration分析:AutoProxyRegistrar进入这个方法AopConfigU...转载 2019-03-12 10:56:20 · 1888 阅读 · 0 评论 -
Spring Aop(三)
启动测试类 断点进入到AbstractAdvisorAutoProxyCreator >>setBeanFactory 方法分析执行顺序执行步骤:1、传入配置类,创建ioc容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContex...原创 2019-03-07 16:11:46 · 159 阅读 · 0 评论 -
Spring aop(二)
接下来我们重点分析:AnnotationAwareAspectJAutoProxyCreator类public class AnnotationAwareAspectJAutoProxyCreator extends AspectJAwareAdvisorAutoProxyCreatorpublic class AspectJAwareAdvisorAutoProxyCreator ext...原创 2019-03-07 15:22:21 · 99 阅读 · 0 评论 -
spring aop (一)
1.@EnableAspectJAutoProxy开启aop2.点进@EnableAspectJAutoProxy@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AspectJAutoProxyRegistrar.class)public @interface EnableA...原创 2019-03-07 15:13:31 · 102 阅读 · 0 评论 -
spring ioc 生命周期
package com.atguigu.bean;import org.springframework.beans.BeansException;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.BeanFactoryAware;import org...原创 2019-02-27 11:23:47 · 1353 阅读 · 0 评论 -
注解
package cn.itcast.annotaion;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;impor原创 2013-06-01 13:52:30 · 530 阅读 · 0 评论 -
类扫描器注解
package cn.itcast.spring.annotaion.scan;import javax.annotation.Resource;import org.springframework.stereotype.Component;/** * @Component 等价于 * @component("b") 等价于 * @author Administrator *原创 2013-06-01 16:14:28 · 836 阅读 · 0 评论 -
spring中的各种通知
package cn.itcast.spring.aop.xml;public class Person { private String pname; private Integer pid; public String getPname() { return pname; } public void setPname(String pname) { this.pname原创 2013-06-02 16:26:45 · 1219 阅读 · 0 评论 -
spring中 aop注解
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"package cn.i原创 2013-06-02 20:59:44 · 668 阅读 · 0 评论 -
spring中aop的xml形式
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLo原创 2013-06-02 21:01:06 · 799 阅读 · 0 评论 -
ssh框架整合
Daopackage cn.itcast.ssh.dao;import cn.itcast.ssh.domain.Person;public interface PersonDao { public void savePerson(Person person); public Person getPersonByPid(Long pid);}DaoImplpackage原创 2013-06-04 23:03:37 · 644 阅读 · 0 评论 -
ssh三大框架整合 getHibernateTemplate
getHibernateTemplate前提条件:你的类必须继承HibernateDaoSupport 一: 回调函数: public List getList(){ return (List ) getHibernateTemplate().execute( new HibernateCallback() { public List doIn原创 2013-06-05 18:53:00 · 708 阅读 · 0 评论 -
spring类扫描器
/** * 原理 * 1、启动spring容器,spring容器解析配置文件 * 2、当解析到 就会在上面指定的包及子包中扫描所有的类,看哪些类上面有@Component注解 3、如果有该注解,则有如下的规则: @Component public原创 2015-08-22 21:08:37 · 1189 阅读 · 0 评论 -
cglib动态代理和jdk的动态代理
cglib的动态代理: 名称用$$修饰 代理类是目标类的子类hibernate中的使用的cglib代理jdk的动态代理: 名称用$修饰 代理类和目标类实现了共同的接口原创 2015-08-23 22:05:10 · 398 阅读 · 0 评论 -
AOP
AOP的意义(不是spring aop) 在开发的时候,各个切面和目标类是完全松耦合的,但是最终生成的代理对象的方法把这几个内容就结合起来了原创 2015-08-24 21:23:40 · 323 阅读 · 0 评论 -
spring的IOC和DI
IOC:控制反转DI:依赖注入IOC和DI结合的真正意义:java代码端完全的面向接口编程原创 2015-08-18 21:14:03 · 409 阅读 · 0 评论 -
spring 注解
原理 * 1、当启动spring容器的时候,创建两个对象 * 2、当spring容器解析到 * * spring容器会在spring容器管理的bean的范围内查找这些类的属性上面是否加了@Resource注解 * 3、spring解析@Resource注解的name属性 * 如果name属性为"原创 2015-08-22 20:54:17 · 321 阅读 · 0 评论 -
自己实现spring核心IOC部分
beanpackage cn.itcast.bean;public class A { public A() { System.out.println("A对象被创建了!"); } private int name; public int getName() { return name; } public void setName(int原创 2015-11-18 11:04:46 · 479 阅读 · 0 评论 -
springboot整合springretry重试框架
添加POM<!-- spring-retry依赖--> <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> ...原创 2018-09-29 15:38:33 · 1041 阅读 · 0 评论 -
spring 单实例和多实例
package com.atguigu.config;import com.atguigu.bean.Color;import com.atguigu.bean.ColorFactoryBean;import com.atguigu.bean.Person;import com.atguigu.bean.Red;import com.atguigu.condition.LinuxCond...转载 2019-03-11 14:28:53 · 321 阅读 · 0 评论 -
使用重复注解
@ComponentScans( value = { @ComponentScan(value="com.atguigu",includeFilters = {/* @Filter(type=FilterType.ANNOTATION,classes={Controller.class}), ...原创 2019-01-10 11:47:34 · 753 阅读 · 0 评论 -
spring
/* * 启动spring容器 * 创建spring容器对象 就相当于启动spring容器 * spring的工作就是创建对象 */ "helloWorld"class="cn.itcast.spring.alias.HelloWorld"> 把helloworld这个类纳入spring容器原创 2013-06-01 12:38:56 · 581 阅读 · 0 评论