Spring
Catalina_yep
这个作者很懒,什么都没留下…
展开
-
理理Spring中一个bean的创建过程-------AbstractApplicationContext这个抽象类中的refresh()方法
public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { StartupStep contextRefresh = this.applicationStartup.start("spring.context.refresh"); // Prepare this context for refreshing. prep原创 2020-12-03 14:33:57 · 183 阅读 · 0 评论 -
我理解的Spring的循环依赖
一.具体过程:所谓循环依赖,是指在两个类之间的相互引用,例如在A中引用B,B中引用A,那Spring容器在创建A时的步骤如下:1)先从单例池中拿,这个单例池即我们经常说的spring容器,也可以称之为一级缓存,里面是一个map集合,装的是完整的bean2)如果单例池中没有,那就会去调用createbean方法去创建,在创建的同时,把它放入一个set集合中,表示该类正在创建3)在new 完A后,会先去判断是否支持循环引用,如果支持,就会先把这个new但是还没进行属性注入的A放到一个二级缓存中,我们把它原创 2020-12-02 20:04:40 · 118 阅读 · 0 评论 -
Spring — AOP编程
Spring系列— AOP第一章、静态代理设计模式1. 为什么需要代理设计模式1.1 问题在JavaEE分层开发开发中,那个层次对于我们来讲最重要DAO ---> Service --> Controller JavaEE分层开发中,最为重要的是Service层Service层中包含了哪些代码?Service层中 = 核心功能(几十行 上百代码) + 额外功能(附加功能)1. 核心功能 业务运算 DAO调用2. 额外功能 1. 不属于业务原创 2020-09-02 08:29:36 · 215 阅读 · 0 评论 -
Spring源码---从源码角度理解Autowire和Resource的区别
在自动注入时,Autowire和Resource后置处理器的类不一样,Resource是CommonAnnotationBeanPostProcessor,而Autowire是 AutowiredAnnotationBeanPostProcessor原创 2020-08-27 15:15:58 · 166 阅读 · 0 评论 -
Spring源码三---从源码角度怎么证明spring是默认支持循环依赖的
源码:private boolean allowCircularReferences = true;// Eagerly cache singletons to be able to resolve circular references // even when triggered by lifecycle interfaces like BeanFactoryAware. boolean earlySingletonExposure = (mbd.isSingleton() &&am原创 2020-08-27 14:44:23 · 176 阅读 · 0 评论 -
Spring源码二---spring加载资源并装配对象的过程
1.定义好Spring的配置文件2.通过Resource对象将spring配置文件进行抽象,抽象成一个Resource对象3.定义好Bean工厂(各种beanFactory)4.定义好XmlBeanDefinitionReader对象,并将工厂作为参数传递进去供后续回调使用5.通过XmlBeanDefinitionReader对象读取之前抽象出的Resource对象,(包含了XML文件的解析过程)6,IOC容器创建完毕,用户可以通过容器获取到所需的对象信息1)通过Resource对象将sprin原创 2020-08-27 11:32:48 · 115 阅读 · 0 评论 -
Spring源码一BeanFactory和FactoryBean的区别
1.BeanFactory是整个spring容器的一个根容器,它里面描述了在所有的子接口或者是子类当中,对于容器的一些处理原则跟一些职责到底是什么,包括生命周期方法的一些约定2.1)FactoryBean本身是存活在BeanFactory当中的,它本身也是一个工厂,这个工厂的作用是用于获取由FactoryBean能创建出来的对象,在创建出来这个对象的时候,可以在这个对象的某些方法的前面或者后面执行一些操作,来实现AOP,如果一个类实现看FactoryBean这个接口,则这个类就成为了一个工厂,这个工厂的原创 2020-08-27 10:30:43 · 146 阅读 · 0 评论 -
Spring--AOP动态代理之CGLIB动态代理
1.CGLIB动态代理概述CGLIB(Code Generation Library)是一个开源项目CGLIB和JDK动态代理一样都是动态代理,`但是CGLIB代理没有接口的类CGLIB代理没有接口的类,在JVM动态的为这个代理创建一个子类,子类重写父类方法,并且调用父类方法,在父类方法执行之前,之后,异常,最终做增强Spring默认已经集成CGLIB代理,直接可以使用即可,不用拷贝任何jar包创建方式:在获取代理类的方法中1)创建Enhancer CGLIB代理对象Enhancer en原创 2020-08-20 16:27:43 · 551 阅读 · 0 评论 -
Spring--AOP动态代理技术之jdk动态代理
1.什么是动态代理技术Java中的动态代理,就是使用者使用的不是真实的对象,而是使用的一个代理对象,而这个代理对象中包含的就是真实的对象,代理对象就是不改变原有对象的功能方法的基础之上封装新的功能动态代理不是在编译阶段产生的代理对象(开发者不同编写源代码),而是在JVM运SpringAOP使用代理技术两种1,Java官方的JDK动态代理技术2,CGLIB 第三方代理技术行中动态产生的2.使用JDK动态代理2.1.JDK动态代理API分析2.1.1 java.lang.reflect.Proxy原创 2020-08-20 16:18:13 · 216 阅读 · 0 评论 -
Spring-DI依赖注入的三种方式
DI:Dependency Injection(依赖注入)从字面上分析:IoC:指将对象的创建权,反转给了Spring容器;DI :指Spring创建对象的过程中,将对象依赖属性(简单值,集合,对象)通过配置设值给该对象。IoC和DI其实是同一个概念的不同角度描述,DI相对IoC而言,明确描述了“被注入对象依赖IoC容器配置依赖对象”。所谓的依赖注入,就是属性不创建对象,通过配置文件的配置将Spring容器里面的对象注入给对应的属性依赖注入有三种方式1.setter注入,(属性注入)使用se原创 2020-08-20 15:46:09 · 359 阅读 · 0 评论 -
Spring--IOC-实例化bean的四种方式
一.构造器实例化(无参数构造器),最标准,使用最多javaBean中必须有无参构造方法 <!-- 1.使用无参数构造器(最多,最常见) --> <bean id="someBean1" class="cn.zj.spring.bean.SomeBean1"/> <!-- 底层原理 Class<SomeBean1> clz = Class.forName("cn.zj.spring.bean.SomeBean1") SomeBean1 bean1原创 2020-08-20 15:34:35 · 242 阅读 · 1 评论 -
Spring和mybatis的集成---xml开发
一.jar包准备和配置文件的准备1.spring 的依赖包2.mybatis的依赖包3.MyBatis和Spring框架集成的桥梁包4.数据库驱动包和连接池5.Mybatis支持的日志包log4j6.项目集成需要的各种配置文件二.service层和mapper层的维护1.service层@Servicepublic class UserServiceImpl implements UserService { @Autowired private UserM原创 2020-08-17 20:09:54 · 130 阅读 · 0 评论 -
Spring的声明式事务----Annotation注解方式
一.applicationContext.xml配置文件 <!--配置包扫描--> <context:component-scan base-package="com.sxt"/> <!--读取配置文件--> <context:property-placeholder location="classpath:db.properties"/> <!--配置数据源--> <bean id="d原创 2020-08-17 17:42:57 · 148 阅读 · 0 评论 -
Spring-----声明式事务管理-xml方式配置
一.准备配置文件1.1 在配置文件中引入新的命名空间 tx<beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema原创 2020-08-17 17:26:43 · 151 阅读 · 0 评论 -
spring中如何读取properties文件
1.value只能注入基本数据类型以及它们的包装类和String类型数据的,支持${ }注入Properties文件的键值对,等同<proprty name=”...” value=”${Key}”>1)注入基本数据类型以及它们的包装类和String类型数据的@Componentpublic class User { @Value("王语嫣") private String name; @Value("1234") private int pwd;原创 2020-08-14 21:01:59 · 841 阅读 · 0 评论 -
Spring用于依赖注入的注解
一.回顾XML配置文件使用如下代码实现注入的。通过注入注解也可以实现。<property name="" ref="">Spring提供了两套注解可以解决依对象依赖注入的方案:二.@Autowired +@Qualifier():是Spring定义的标签1.字段注入:直接把注解贴在字段上 @Autowired默认按照类型注入,spring在运行过程中,会去spring容器中寻找对应的接口类型的对象,自动注入问题一:如果spring容器中有多个相同类型的对象,会报异常NoUni原创 2020-08-14 20:35:29 · 1246 阅读 · 0 评论 -
Spring常用IOC注解说明
1.用于对象的注解-IOC相关注解1.1组件注解我们将用于被扫描创建对象的注解,统称为组件注解。组件包括:@Component:用于声明三层以外的组件注解@Controller:用于声明表示层的组件注解@Service:用于声明服务层的组件注解@Repository:用于声明持久层的组件注解**组件注解的功能都是标识类为注解的组件类,启动Spring框架的程序时,声明将这些组件类注入到Spring容器里面。**意味着,只要是加了这四个注解任何一个注解的类,在程序启动的时候,Spring就通过原创 2020-08-14 19:32:30 · 124 阅读 · 0 评论 -
Spring注解的入门程序
一.注解版本IOC配置步骤:1.第一步:拷贝必备jar包到工程的lib目录。注意:在基于注解的配置中,我们还要多拷贝一个aop的jar包。如下图:2.第二步:在类的根路径下创建一个任意名称的xml文件.不能是中文注意:基于注解整合时,Spring配置文件导入约束时需要多导入一个context名称空间下的约束在这里插入代码片<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframewo原创 2020-08-14 19:07:36 · 117 阅读 · 0 评论