资讯专栏INFORMATION COLUMN

第一章--Spring之旅

pkwenda / 1595人阅读

摘要:两种方式来表示的应用上下文。日志,事务管理和安全这样的系统服务经常融入到具有核心业务逻辑的组件中去,这些系统服务通过被称为横切关注点。容器使用管理构成应用的组件,他会创建相互协作的组件之间的关联。的生命周期四俯瞰的风景线模块,,,,

完整代码请见:https://github.com/codercuixi...
为了降低Java开发的复杂性,Spring采用了以下4种策略:

基于pojo的轻量级和最小侵入式编程

通过依赖注入和面向接口实现松耦合

基于切面和惯例进行声明式编程

通过切面和模板减少样本式代码

一. 依赖注入

(利用面向接口编程的思想,由Spring应用上下文负责依赖注入)
通过依赖注入(DI ,Dependency Inject),对象的依赖关系由系统中负责协调各对象的第三方组件在创建对象的时候进行设定。对象无需自行创建或管理他们的依赖关系,如图1.1所示,依赖关系被自动注入到需要他们的对象中去。

Spring通过应用上下文(Application Context)来装在bean定义并把组装起来。Spring自带了很多很多应用上下文,他们之间的区别仅仅在于如何加载配置。

两种方式来表示Spring的应用上下文。 1.注解(墙裂推荐使用)

1通过@Configuration来声明这个类是Java Bean的配置类,通过在具体的方法前面添加@Bean注解来声明一个Bean

package sia.knights;

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    import java.io.PrintStream;

    /**
     * Create by cuixin on 2018/8/25 
     **/ 
    @Configuration public class KnightConfig {
        @Bean
      public Knight knight() {
            return new BraveKnight(quest());
        }

        @Bean
      public Quest quest() {
            return new SlayDragonQuest(stream());
        }

        @Bean
      public PrintStream stream() {
            return new FakePrintStream();
        }
    }
    

1.2. 通过@ContextConfiguration来配置Spring应用上文下信息

 package sia.knights;

    import org.junit.After;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    import org.springframework.test.context.support.AnnotationConfigContextLoader;

    import javax.annotation.Resource;

    /**
     * Create by cuixin on 2018/8/25 
     **/ 
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = KnightConfig.class, loader = AnnotationConfigContextLoader.class)
    public class KnightJavaConfigInjectionTest {
        @Autowired
      private Knight knight;
        @Resource
      private FakePrintStream printStream;

        @After
      public void clearPrintStream() {
            printStream.clear();
        }

        @Test
      public void shuoldInjectKnightWithSlayDragonQuest() {
            knight.embarkOnQuest();
            assert "Embarking on quest to slay the dragon!
".equals(printStream.getPrintedString());
        }
    }
2.xml配置文件(基本已经弃用)

2.1. knigh.xml

  

        
            
        

        
            
        

    

2.2 通过Spring提供的ClassPathXmlApplicationContext或者FileSystemXmlApplicationContext来寻找xml配置文件

    package sia.knights;

    import org.springframework.context.support.ClassPathXmlApplicationContext;

    /**
     * Create by cuixin on 2018/8/24
     **/ 
     public class KnightMain {
        public static void main(String args[]){
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/knight.xml");
            Knight knight = context.getBean(Knight.class);
            knight.embarkOnQuest();
            context.close();
        }
    }
  
二.面向切面编程 AOP

面向切面编程(aspect-oriented programming,AOP)允许你把遍布应用各处的功能分离出来形成可重用的组件。

系统由多个组件组成,比如核心业务,日志,事务管理和安全。

日志,事务管理和安全这样的系统服务经常融入到具有核心业务逻辑的组件中去,这些系统服务通过被称为横切关注点。

如果不管不问,那么这些横切关注点会重复出现在多个组件中,也会增加每一个组件的复杂性。

AOP能够使这些服务模块化,并且以声明的方式将他们需要影响的组件中去。我们可以将切面想象成为覆盖在很多组件之上的一个外壳。

2.1. 利用xml配置aop
  
     

      
        
      

      
        
      

      
        
      

   
     
        
        
        
    
   
 
三. 使用模板消除样本式代码

样板代码:为了实现通用的和简单的任务,不得不一遍遍重复写的代码。

3.1 容纳你的Bean

在基于Spring的应用中,你的应用对象存在于Spring容器(container)中,如图1.4所示,Sring容器负责创建帝乡,装配他们,配置他们并管理他们的整个生命周期,从生存到死亡(在这里,可能就是new到finalize)。

容器是Spring的核心。Spring容器使用DI管理构成应用的组件,他会创建相互协作的组件之间的关联。

3.2 Spring容器的两种实现类型实现

3.2.1. bean工厂不常用。
由org.springframework.benas.factory.BeanFactory接口定义,是简单的容器,提供最简单的DI支持。应用上下文由orgspringframework.context.ApplicationContext接口定义)基于BeanFactory构建,并提供应用框架级别的

3.2.2.使用应用上下文

AnnotationConfigApplicationContext: 从一个或多个基于Java的配置类中加载Spring应用上下文
ApplicationContext context = new AnnotationConfigApplicationContext(KnightConfig.class)

AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文
ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载上下文定义,把应用上下文的定义文件作为类资源

ApplicationContext context = new ClassPathXmlApplicationContext("knight.xml")

FileSystemXmlApplicationContext:从文件系统的一个或多个xml配置文件中加载上下文定义

ApplicationContext context = new FileSystemXmlApplicationContext("c://knight.xml")

XmlWebApplicationContext:从Web应用的一个或多个xml配置文件中加载上下文定义。
3.3 bean的生命周期

四.俯瞰Spring的风景线 4.1 Spring模块

4.2 Spring portfolio

srping-web-flow . Spring web Service, Spring security,Spring Integration, SpringBatch, Spring Data, Spring Social,
Spring Mobile, Spring Boot

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76936.html

相关文章

  • chrome扩展开发之旅 第一

    摘要:扩展及应用介绍与区别介绍支持开发者为其编写各种各样的扩展与应用来扩充其功能。用处安装扩展之后,就会读取扩展中的文件。结语以上就是第一章的总结,接下来的笔记,敬请期待原书项目代码下载扩展及其应用开发 读书笔记介绍 寒假想自己做一个chrome扩展,便从图书馆借了这本书。同时,为了培养自己的好习惯,做沉淀,便读一章写一篇总结,全书总共10章,将会分为10篇博文。欢迎大家多多指正,也希望大家...

    lei___ 评论0 收藏0
  • Spring之旅第一站(不得不佩服老外...)

    摘要:表示少女与紧耦合在它的构造函数中自行创建了。面向切面编程往往被定义为促使软件系统实现关注点的分离一项技术系统由许多不同的组件组成,每个组件各负责一特定的功能。我们可以把切面想象为覆盖在很多组件之上的一个外壳。 第1章 Spring之旅 说明 1、本文抄写了《Spring 实战》重点内容,参考了GitHub上的代码 2、每个人的学习方式不一样,但目的是一样的,活学活用。最近一直在听《我...

    thekingisalwaysluc 评论0 收藏0
  • 【开发工具学习之旅-JMeter】- JMeter简介以及HTTP协议使用测试

    摘要:简介以及协议使用测试简介简介官网的组成取样器进行脚本逻辑控制。测试结果的请求介绍以及使用提供的请求登录了做测试在中右键新建一个请求查看结果格式的请求实战格式发送数据,是以格式或者之类的数据来发送。发起请求模拟之后会出现以下错误。 ...

    dongfangyiyu 评论0 收藏0
  • Spring之旅第十站:MVC配置、上传文件、异常处理、跨重定向请求、为控制器添加通知

    摘要:依赖于对请求的支持。使用解析兼容的没有构造器参数,也没有要设置的参数,这样,在应用上下文中,将其声明为就会非常简单。默认是没有限制的整个请求的容量。 Spring MVC 高级的技术 本章内容: Spring MVC配置的替代方案 处理文件上传 在控制器中处理异常 使用flash属性 稍等还没结束 说明 如果你有幸能看到。后面的章节暂时不更新了,改变学习方式了。重要理解思想,这本书...

    leanote 评论0 收藏0
  • spring boot 之旅 - 集成模板引擎beetl

    摘要:之旅系统环境新建项目使用开发工具直接在官网创建参考博客新建验证访问启动右键浏览器输入页面显示正常集成视图引擎参考文档参考项目文件导入配置测试访问学习文档源码下载百度云盘地址 spring boot 之旅 系统环境 JDK 8 Spring Boot 1.5.3 beetl 2.7.15 新建项目 adagio 使用开发工具 Spring Tool Suite - new Spri...

    aikin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<