zoukankan      html  css  js  c++  java
  • spring技术之IOC总结

    spring介绍

          spring是分层的javaSE/EE应用的full-stack(全栈)轻量级开源框架,它是ioc(lnversion of control)控制反转和aop(aspect oriented programming)面向切面编程为核心,提供了表现层springmvc和持久层spring jdbc业务层的事务管理等企业级应用解决方案,还能实现将开源世界中众多优秀的第三方框架和类库整合,越来越受欢迎的javaee企业级应用框架。

    spring优点

     IOC解耦,简化开发

         通过spring提供的ioc容器,可以将对象间的依赖关系交由spring管理,避免硬编码造成的程序间过渡耦合,用户也不必再为了编写工厂类,属性文件解析等底层实现编写代码。可以更加专注于业务系统需求实现。

    AOP面向切面编程支持

        用过spring的aop功能,方便实现面向切面编程,很多使用传统oop编程不容易实现的业务功能,可以通过aop轻松实现,比如事务管理,日志管理。

    声明式事务支持

    通过声明式方式灵活实现事务管理,提高开发效率和质量,将我们(程序员)从单调烦闷的事务管理代码中解脱出来

    方便程序测试

    可以使用非容器依赖的方式进行程序测试工作,让测试工作更加轻松,更加方便。

    集成第三方优秀框架

    spring框架降低了第三方框架的集成使用难度,提供了对各种框架(hibernate,strus2,quartz,mybatis,springmvc等)的直接支持

    学习java源码的经典案例

    spring的源码设计精妙,结构清晰,匠心独具,处处体现了大师对java设计模式的灵活应用以及java技术的高深造诣,他的源码无疑是java技术的最佳实践案例

    IOC介绍

    IOC(inversion of control)控制反转,是面向对象编程的一个重要法则,用于消减计算机程序间的耦合问题。控制反转中分为两种类型,一种是DI(Dependency Injection)依赖注入,另外一种是DL(Dependency Lookup)依赖查找。实际应用中依赖注入使用更多。

     

     依赖注入介绍

        在我们刚才完成的spring的ioc案例中,已经让spring框架为我们创建了客户业务层,客户持久层对象。但是层与层之间的关系没有维护起来。接下来我们来看spring框架的依赖注入。首先给依赖注入下一个定义,依赖注入(Dependency Injection),它是spring框架核心ioc的具体实现。我们在编写程序代码时,通过控制反转,把对象交给spring管理。但是代码中必然会存在一定的依赖关系,比如在业务层(service)中,需要引用持久层(dao)对象,那么这种层与层之间的关系,我们也交给spring来维护。

    简单理解:依赖注入就是给成员变量赋值。

    构造方法注入

    构造方法注入。顾名思义,就是通过类中的构造方法,给成员变量赋值。

     

     

     set方法注入

    set方法注入。顾名思义,就是通过类中的set方法,给成员变量赋值。

     

     一、spring的IOC常用注解

    1.注解入门体验:
    第一步:创建项目
    第二步:编写项目的三层对象
    第三步:搭建spring IOC的xml方式环境
    配置pom.xml,导入ioc框架包
    编写bean.xml配置文件

    第四步:使用注解方式体验

    2.常用注解:
    2.1.创建对象相关的注解
    @Component
    衍生的三个注解:@Controller,@Service,@Repository

    2.2.设置bean的作用范围相关的注解
    @Scope

    2.3.注入数据相关的注解
    @Autowired,@Qualifier,@Resource,@Value

    2.4.与bean的生命周期相关的注解【了解】
    @PostConstruct,@PreDestroy

    二、案例演示spring的IOC注解使用

    1.纯xml版本
    第一步:创建项目
    第二步:配置pom.xml,导入jar包
    spring框架包(ioc相关的jar包)
    spring jdbc模块的包
    druid连接池包
    mysql数据库驱动包

    第三步:编写客户实体类

    第四步:编写客户RowMapper结果集映射类
    BeanPropertyRowMapper

    第五步:编写客户持久层对象
    第六步:编写客户业务层对象

    第七步:编写bean.xml配置文件


    第八步:编写客户表现层对象


    2.xml与注解混合版本
    思路:
    第一步:把我们的dao和service使用注解配置
    第二步:把第三方的对象(JdbcTemplage,DataSource),保留在bean.xml
    第三步:配置包扫描dao和servic

    3.纯注解初始版本
    思路:不再需要xml文件,找一个什么来代替xml文件???
    答案:编写一个java类作为spring的配置类,代替bean.xml文件

    4.纯注解优化版本
    问题:
    1.数据库连接池的属性,在java代码写死了,属于硬编码
    2.在主配置文件的对象太多,能不能采用模块化的思想,分模块编写配置类

    三、spring框架整合junit

    1.纯xml版本的整合

    2.纯注解版本的整合

  • 相关阅读:
    模板插件aTpl
    KFold交叉验证方式
    XGboost数据比赛实战
    机器学习特征选择方法
    机器学习项目实战
    python二维表格数据的导入与导出
    centos-linux系统如何进入root权限?
    centos7解决yum install mysql-server没有可用包?
    Keras实现简单分类神经网络
    MySQL学习入门总结(非常重要)
  • 原文地址:https://www.cnblogs.com/Jeremy95-Sze/p/13097009.html
Copyright © 2011-2022 走看看