spring-1

Spring框架
    Spring官网:https://spring.io/
        框架:经过验证得,具有一定功能得,半成品软件
        作用:提高开发效率,增强可重用性,提供编写规范,节约维护成本,解耦底层实现原理
        Spring是什么?
            Spring是分层得JavaSE/EE应用full-stack轻量级开源框架
        Spring体系结构


            底层是核心容器
                1.Beans
                2.Core
                3.Context
                4.SpringEI表达式
            中间层技术
                Aop
                Aspects
            应用层技术
                数据访问与数据集成
                Web集成
                Web实现
            基于Test测试
            
            
    IOC得简介
        耦合和内聚
            耦合:是指代码书写过程中所使用技术得结合紧密度,用于衡量软件中各个模块之间得互联程度
            内聚:是指代码书写过程单个模块内部各组成部分间得练习,用于衡量软件中各个功能模块内部得功能关系
        程序书写得目标:高内聚,低耦合
            就是同一个模块内得各个元素之间要高度紧密,但是各个模块之间得相互依存度却不要那么紧密
        IoC:(Inversion Of Control)控制反转,Spring反向控制应用程序所需要使用得外部资源,对象得控制权由程序转移到外部
        IOC容器:Spring控制得资源全部放置在Spring容器中,该容器称为Ioc容器
        Bean:IOC容器负责对象得创建,初始化得一系列工作,被创建或被管理得对象在IOC容器中统称为Bean
        DI(Dependency Injection)依赖注入:当我们依赖一个对象得时候,我们可以用容器注入一个对象
        传统模式:主控权在类得手中
        IOC容器:主控权在Spring手中
        由主动new资源变成为Spring提供资源
        最终结果:使用对象时不仅可以直接从IOC容器中获取,并且获取到得Bean已经绑定了所有得依赖关系
    案例思路
        1.Maven中导入坐标
        2.编写业务层和表现层(模拟)接口与实现类
        3.建立Spring配置文件
        4.配置所需资源(Service)为spring控制得资源
        5.表现层(App)通过spring获取资源(Spring实例)
        思路分析
        1.管理什么?(Service与Dao)
        2.如何将被管理得对象告知IoC容器?(配置和注解)
        3.被管理得对象交给IoC容器,如何获取到IOC容器?(接口)
        4.IOC容器得到后,如何从容器中获取bean?(接口方法)
    Bean
        名称:bean
        类型:标签
        归属:bean标签
        作用:定义spring中资源,受此标签定义的资源受到spring的控制
        格式:
        <beans>
                <bean />
        </beans>
        基本属性:
            <bean id="beanId" name="beanName1,beanName2"class="ClassName"></bean>
            *id:bean的名称,通过id值获取bean
            *class:bean的类型
            *name:bean的名称,可以通过那么的值获取bean,可以设置多个,都可以使用
    Scope
        名称:scope
        类型:属性
        归属:bean标签
        作用:定义bean的作用范围
        格式:
                <bean scope="singleton"></bean>
        取值:
            *singleton:设定创建出的对象保存在spring容器中,是一个单例对象
            *prototype:设定创建出的对象保存在spring容器中,是一个非单例对象
            *request,session,application,websocket:设定创建出的对象放置在web容器对应的位置
        singleton是运行spring容器的时候就会创建,而prototype是当你调用它的时候才会去创建
    Bean的生命周期
        名称:init-method,destroy-method
        类型:属性
        归属:bean标签
        作用:定义bean对象在初始化或销毁完成的工作
        格式:
                <bean init-method="init" destroy-method="destroy"></bean>
        取值:bean的对应的类中对应的具体方法名
        注意:
            *当scope="singleton"时,spring容器中有且仅有一个对象,init方法在创建容器时仅执行一次
            *当scope="prototype"时,spring容器要创建同一类型的多个对象,init方法在每个对象创建时执行一次
            *当scope="prototype"时,关闭容器会导致实例的销毁,调用destroy方法一次
            *当scope="prototype"时,对象的销毁有垃圾回收机制控制,destroy将不会被执行
    Bean对象创建方式
        名称:factory-bean,factory-method
        类型:属性
        归属:bean标签
        作用:定义bean对象创建方式,使用实例工厂得形式创建bean,兼容早期遗留系统得升级工作
        格式:
            <bean factory-bea=""factoryBeanId factory-method="factoryMethodName"></bean>
        取值:工厂bean中用于获取对象得实例方法名
        注意事项:
                使用实例工厂创建bean首先需要将实例工厂配置bean,交由spring进行管理
                factory-bean时实例工厂得beanId
    DI(依赖注入)
        loc(Inversion Of Control):控制反转,Spring反向控制应用程序所需要使用得外部资源
        DI(Dependency Injection):依赖注入,应用程序依赖得资源由Spring为其提供,资源进入应用程序得方式称为注入
        loc和Dl得关系就是同一件事站在不同得角度看待问题
    依赖注入得两种方式
        *set注入
        *构造器注入
            set注入(主流)
                名称:property
                类型:标签
                归属:bean标签
                作用:使用set方法得形式为bean提供资源
                格式:
                <bean>
                    <property />
                </bean>
                基本属性:
                    <property name="propertyName" value="propertyValue" ref="beanId"/>
                    *name:对应bean中得属性名,要求该属性必须提供可访问得set方法(严格规范此名称是set方法对应名称)
                    *value:设定非引用类型属性对应得值,不能与ref同时使用
                    *ref:设定引用类型属性对应bean得id,不能与value同时使用
                简单来说set注入:封装中得set方法,bean中使用property标签注入属性,name表示注入得属性名,对象使用ref进行注入,其他使用value进行注入
            构造器注入(了解)
                名称:constructor-arg
                类型:标签
                归属:bean标签
                作用:使用构造方法得形式为bean提供资源,兼容早期遗留系统得升级工作
                格式:
                <bean>
                    <constructor-arg />
                </bean>
                基本属性:
                    <constructor-arg name="argName" value="argValue" />
                    *name:对应bean中构造方法所携带得参数名
                    *value:设定非引用类型属性对应得值,不能与ref同时使用
                注意:一个bean可以有多个constructor-arg标签
                简单来说构造器注入: 带参构造方法,bean中使用constructor-arg标签注入属性,name表示注入得属性名,对象:使用ref进行注入,其他:使用value进行注入
                支持按类型注入支持按顺序注入
        集合类型数据注入
            名称:array,list,set,map,props
            类型:标签
            归属:property标签或constructor-arg标签
            作用:注入集合数据类型属性
            格式:
                <property>
                    <list></list>
                </property>

 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值