spring框架基础总结(一)

Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发,管理javaBean;从测试性松耦合角度而言,对jav程序都是有利的,依赖的资源更少

        降低了耦合性

        允许使用者选择哪个组件

        分层一站式:为每层的开发都提供了解决方法

        集成:对目前流行的优秀框架都进行支持

        spring是一个开源框架

特点:

        1)方便解耦,简化开发

        Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。

        2)方便集成各种优秀框架

        Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如         Struts2、       Hibernate、MyBatis 等)的直接支持。

        3)降低 Java EE API 的使用难度

        Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。

        4)方便程序的测试

        Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。

        5)AOP 编程的支持

        Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。

        6)声明式事务的支持

        只需要通过配置就可以完成对事务的管理,而无须手动编程。

什么是耦合?

        高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。

        低耦合是指让每个模块尽可能的独立完成某个特定的子功能。

        那么耦合度是什么呢,

        耦合度(Coupling)是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。

        模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。

        降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。

通俗点讲:

        耦合度就好比两个人的对对方的需求程度。

        如果两个人相互需求很高的话,这两个人就很难离开彼此。独立性差。即耦合度高。

        两个人都能独立工作,对对方的需求比较低,不需要对方的帮助也可以完成工作。关联度比较低,耦合度低。

        更简单说的说就是,相互之间的联系是否紧密。

        联系紧密:耦合度强,独立性差。

        联系少:耦合度低。

spring 核心是什么?

        1:控制反转(IOC),传统的JAVA开发模式中,当需要一个对象时,我们使用new活着getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,Spring容器使用工厂模式为我们创建了所需要的对象,不需要我们自己去创建了,直接调用Spring提供的对象就可以了,这就是控制反转。
        2:依赖注入(DI),Spring使用JavaBean对象的set方法或者带参数的构造方法为我们在创建所需要对象时将其属性自动设置为我们所需要的值的过程,这就是依赖注入。
        3:面向切面编程(AOP),在面向对象编程(OOP)中,我们将事务纵向抽成一个个的对象,而在面向切面编程中,我们将一个个的对象某些类似的方面横向抽成一个切面,对这个切面进行一些如权限控制,事务管理,日志记录等公用操作处理的过程,就是面向切面编程的思想。


原文链接:https://blog.csdn.net/Saika_xy/article/details/87482474

IOC个DI的区别:

        IOC:  控制反转,将类的对象的创建交给Spring类管理创建. 
        DI: 依赖注入,将类里面的属性在创建类的过程中给属性赋值. 
        DI和IOC的关系: DI不能单独存在,DI需要在IOC的基础上来完成.

属性注入的方式:

        1、set注入

                调用的是set方法

                举例:假设有一辆汽车,有颜色。品牌,价格和最大速度四种属性,就可以在配置文件中写入:

        其中 ID是标识,class是类名,默认是单例模式,可更改。

        2、构造注入

                调用构造器

                其中,name是属性名,value是属性值

 如果:配置文件配置同一类型多个bean对象时,编码时获取对象需要通过id和类名获取唯一对象,不能直接通过类名获取对象,会获取多个对象,编译时会报错,找不到对象 ,调用getBean()方法时,需要选用合适的方法,保证获取的对象是唯一的,不然就会报错

属性为自定义类型时,则用ref,指向类的标识 

        例如:有个person实体类,拥有一辆车,属性为Car,那么

除此之外,还可用p标签,不过需要更改表头文件,否则会报错。

         eclipes可以自己选择需要的标签,直接导入就会自动生成表头文件,无需自己设置,idea需要项目中设置重新依赖spring,然后在项目中直接使用标签就可,可能还有其他快捷方法,本人目前只会如此。

       如果要带有特殊符号,需要使用标签用<![CDATA[  值  ]]>,否则会报错

 给属性对象赋值

例如:有学生和班级两个类,一个学生对应一个班级,一个班级有多个学生

        1、内部bean ,在getBean()方法中是无法获取到内部bean的

         2、联级赋值

 给集合赋值

        普通数组 : <array>标签

        List集合     <List>

 

        Map集合 <entry key=" " value="">

        set集合 <set>

抽取集合,用util标签

 

 bean

        普通Bean  指定什么类,就返回什么类

        工厂Bean  实现 factoryBean接口,返回的类型为自定义的泛型类型,而不是指定类型

生命周期

        普通情况:构造方法---set方法赋值---init方法初始化---加载配置文件---从spring容器中获取对象---销毁destory

        实现BeanPostProcessor接口

        构造方法---set方法赋值---初始化之前----init方法初始化---初始化之后---加载配置文件---从spring容器中获取对象---销毁destory

        具体测试,实现BeanPostProcessor接口,重写postProcessBeforeInitialization()和ostProcessAfterInitialization()方法,必须返回bean,

        在配置文件中注册上面的类对象

            测试对象

注册文件中引入其方法

测试

打印输出

 

spring管理bean的作用域

创建Bean对象时,

        1)默认是单例模式,即singleton

        <bean  id=""   class=""  scope=" singleton "></bean>

除此之外,还有:

         2)prototype

           原型模式,表示每次通过 Spring 容器获取 Bean 时,容器都会创建一个 Bean 实例。

        3)request

        每次 HTTP 请求,容器都会创建一个 Bean 实例。该作用域只在当前 HTTP Request 内有效。

        4)session

        同一个 HTTP Session 共享一个 Bean 实例,不同的 Session 使用不同的 Bean 实例。该作用域仅在当前 HTTP Session 内有效。

        5)application

        同一个 Web 应用共享一个 Bean 实例,该作用域在当前 ServletContext 内有效。
        类似于 singleton,不同的是,singleton 表示每个 IoC 容器中仅有一个 Bean 实例,而同一个 Web 应用中可能会有多个 IoC 容器,但一个 Web 应用只会有一个 ServletContext,也可以说 application 才是 Web 应用中货真价实的单例模式。

        6)websocket

websocket 的作用域是 WebSocket ,即在整个 WebSocket 中有效。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值