zoukankan      html  css  js  c++  java
  • Java Spring初探

    Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,从github的。

    Spring Framework

    • 概览
    • 详细介绍 Spring Framework Spring Core ## 构建Rest-Service
      参考SpringFramework
      参考Spring官网例子
    • 这里是通过Maven来构建的,通过pom.xml配置好应用的依赖信息,
    • Resolving过程可能会很久,如果某个库一直包红可能是网络问题,建议删除后重新加入pom.xml文件中,需要耐心等待。亲测有效果.
    • 需要先生成JAR包,然后通过java -jar JAR包,之后在浏览器通过默认的ip地址加上默认的端口8080和设置的路径就能访问到数据了,效果如下:
    • 网上也有方案说是修改maven镜像地址,在工程目录下添加settings.xml配置阿里云镜像,我试过几次没什么效果.最后发现原来是自己网差了,多下载几次就行了。 java 1 <mirrors>
      2 <mirror>
      3 <id>nexus-aliyun</id>
      4 <mirrorOf>*</mirrorOf>
      5 <name>Nexus aliyun</name>
      6 <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      7 </mirror>
      8 </mirrors>

    Spring重要概念IoC(Inversion of Control)

    • 控制反转,由Ioc容器在运行期间将对象动态的将某种依赖关系(主要通过pom.xml或注解的方式来设置)注入到容器中。主要是通过DI的方式来实现,如下图所示:

    • 开发者只需实现对应的 POJOs(Pain Old java Object),简单的java类以及描述他们之间关系的配置文件就可以了,其余的工作会由Ioc自动实现

    • 它的主要优点,将对象的创建和组成关系封装起来,但是相反的我们需要添加大量的配置文件。所以在实现接口类时应该尽量的简介,不然会陷入地狱式的配置.

    Spring基础-Bean管理

    • Bean是Spring的最基础部分了,需要熟悉大量的语法格式。
    • 它主要是提供MetaData的配置信息,提供给Ioc文件管理依赖关系创建对象,每个Bean可以可以看作一个具体的Java类。
    • 它主要由两种方式申明,通过xml标记文档写入,通过注解的方式标记,相比较而言后者有着更加完善的检测机制,更加清晰和易于编程。
    • Bean定义了很多个格式来怎么描述类之间的关系,常用的有如下这些

      • id/class:
      • property:
      • 同时也支持多个xml文件导入,通过import关键字将多个xml的配置信息倒入

          <beans>
        <import resource="services.xml"/>
        <import resource="resources/messageSource.xml"/>
        <import resource="/resources/themeSource.xml"/>
        <bean id="bean1" class="..."/>
        <bean id="bean2" class="..."/>
        </beans>
    • Annotation-based configuration:Spring 2.5 引入了对基于注解的配置元数据的支持。

    • Java-based configuration:从 Spring 3.0 开始,Spring JavaConfig 项目提供的许多功能成为了核心 Spring Framework 的一部分

    • Bean常见属性类表

    Bean作用域和生命周期

    • singleton: 每个Bean容器中值存在一份
    • prototype: 每次请求(每次使用)创建新的实例子,destroy方式不生效
    • request: 每次http请求创建一个实例,˙在当前request内生效
    • session: 同上
    • global session: 基于portlet的web中生效(portlet定义了global session),主要是为了避免portlet中各个子系重复请求资源,如登录之后的信息保存等。

    • 通过继承具有生命周期回调的默认Bean实例(InitializingBean,DisposableBean)

    • 通过pom.xml指定初始化和销毁 (default-destory/init-method)

    • 全局设置,在beans标签中设置,此处的方法为可选方法,不实现不会报错

    • 优先级: DefaultLifeCycleBean > CustomClass xml config > xml beans config

    Bean装配Aware接口

    • Spring中提供了一些以Aware接口结尾的接口,用于初始化之后自动获取某些资源
      • ApplicationContextAware
      • ApplicationEventPublisherAware
      • BeanClassLoaderAware
      • BeanFactoryAware
      • BootStrapContextAware
      • LoadTimeWeaverAware
      • MessageSourceAware
      • NotificationPublisherAware
        ...

    Bean的自动装配(AutoWriting)

    • No: 默认的选项
    • byName: 根据属性名自动装配
    • byType: 注意不能有多个类型,必须唯一,防止冲突
    • Constructor: 更加丰富,可以找到对应的有构造器的bean进行组装
    • 上面几种属性限制主要作用是减少配置的代码行数

    Bean装配Resource

    • UrlResoure
    • Class
    • FIleSYstem
    • ServeletContextResource
    • InputStreamResource
    • ByteArrayResource
    • ResourceLoader

    Spring注解管理及实现

    • Spring3.0开始,注解开始丰富,组件扫描与自动装配极大的简化了项目。
      具体参考文档Spring官方文档

    单元测试

    • 单元测试实际上是控制反转的一个验证流程,通过模拟用户的行为事件
    • 启动初始化应用程序上下文,围绕着 @before -> @test -> @after这三个关键事件来执行
    • 同大部分语言类似,
      • 初始化准备测试环境,通常为applicationContext
      • 准备mock数据
      • 构建测试对象
      • 执行具体的测试用户
      • 验证测试结果
      • 释放本次测试单元的资源

    参考

    https://docs.spring.io/spring-framework/docs/current/reference/html/index.html

  • 相关阅读:
    pycharm 2016.2注册码
    python selenium2
    webdriver.py--解说
    Sahi ---实现 Web 自动化测试
    性能测试
    看云-git类的书籍写作
    IntelliJ IDEA 对于generated source的处理
    各种常用的序列化性能的对比
    rpc框架--grpc-java
    grpc mvn protobuf:compile 过程
  • 原文地址:https://www.cnblogs.com/wwoo/p/java-spring-chu-tan.html
Copyright © 2011-2022 走看看