前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring源码分析

Spring源码分析

作者头像
收心
发布2022-12-05 08:41:38
2120
发布2022-12-05 08:41:38
举报
文章被收录于专栏:Java实战博客

本页目录

2022年12月1日的面试过程令我自己很不满意。面试题没背(的确不想背),会给面试官在简单了解你的过程中,可能无法满足其个人的偏见。

为了避免这类事情的发生,我觉得重新分析Spring源码,让这种个人偏见不再发生!

IOC:控制反转

IOC概念

ioc的含义是:把创建对象的过程交给Spring容器进行管理。

IOC底层原理

原理:xml解析、工厂模式、反射

工厂模式思想实现解耦合,反射 + XML对工厂模式二次解耦

代码语言:javascript
复制
<bean id="UserDao" class="com.alibaba.XXX"></bean>

工厂模式wei dai ma

代码语言:javascript
复制
class UserFactory{
    public static UserDao getDao(){
        String classValue = class属性值;
        Class classz = Class.forName(calssValue);
        return (UserDao)classz.newInstance();
    }
}

IOC实现原理:BeanFactory接口

IOC思想给予IOC容器完成,IOC容器底层就是BeanFactory接口

SpringIOC容器的实现方式(两个接口)

  • BeanFactory接口。是用于访问Springbean容器的根接口。不建议我们使用
  • ApplicationContext接口:BeanFactory接口的子接口。我们开发时使用。

BeanFactory特点

加载配置文件不会创建对象,当getBean时,才会创建Bean。

ApplicationContext特点

加载配置文件的时候,就会创建Bean对象。

ApplicationContext 实现类

FileSystemXmlApplicationContext:针对于全路径的Bean的xml文件

ClassPathXmlApplicationContext:针对于src文件夹下的Bean的xml文件。

IOC的Bean管理(xml、注解)

什么是bean管理?

创建对象、注入属性

spring创建对象

spring注入属性

Bean管理的实现方式

基于xml方式、基于注解方式

基于xml创建对象

代码语言:javascript
复制
<bean id="UserDao" class="com.alibaba.XXX" name="user">
</bean>

bean标签属性

  • id:唯一标识
  • class:类全路径
  • name:基本不用

创建对象时,默认是使用无参构造方法创建。

基于xml方式注入属性

DI:依赖注入,注入属性。

  • 使用set方式注入
代码语言:javascript
复制
<bean id="UserDao" class="com.alibaba.XXX" name="user">
    <property name="name" value="zhangsan"></propetry>
    <property name="age" value="10"></propetry>
</bean>
  • 有参构造方法注入属性
代码语言:javascript
复制
<bean id="UserDao" class="com.alibaba.XXX" name="user">
    <constructor-age name="name" value="zhangsan"></constructor-age>
    <constructor-age name="age" value="10"></constructor-age>
    <constructor-age index="填写1,代表第一个参数,不推荐使用index" value="10"></constructor-age>
</bean>

另一种set的写法:p名称空间注入

代码语言:javascript
复制
<bean id="UserDao" class="com.alibaba.XXX" name="user" 
    p:name="zhangsan"
    p:age="10"
    >
</bean>

IOC操作Bean管理(FactortBean)

spring有两种类型的bean,一种是普通bean,一种是工厂Bean。

普通Bean特点是:配置文件定义Bean类型,就是返回值类型

工厂Bean特点是:配置文件定义的Bean类型可能返回值类型不一致

让Bean成为工厂Bean,实现FactoryBean<T>,重写下面2个方法

代码语言:javascript
复制
    @Override
    public Object getObject() throws Exception {
        return null;
    }

    @Override
    public Class<?> getObjectType() {
        return null;
    }

基于注解创建对象

AOP:面向切面编程

aop的含义是:不修改源代码对方法进行增强。

特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IOC:控制反转
    • IOC概念
      • IOC底层原理
        • IOC实现原理:BeanFactory接口
          • BeanFactory特点
          • ApplicationContext特点
        • IOC的Bean管理(xml、注解)
          • 什么是bean管理?
            • spring创建对象
            • spring注入属性
          • Bean管理的实现方式
            • 基于xml创建对象
            • 基于xml方式注入属性
            • IOC操作Bean管理(FactortBean)
            • 基于注解创建对象
        • AOP:面向切面编程
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档