Spring实战第五版(中文版)学习笔记-第一章 Spring起步

这一章主要讲了三部分内容

  • Spring和Spring Boot的必备知识
  • 初始化Spring项目
  • Spring生态系统概览

有过开发经验的同学都应该清楚随着软件开发的不断发展,Spring框架也在不断的变化着,其中就包括微服务和反应式编程。Spring还通过引入Spring Boot简化自己的开发模式。

不管你是开发以数据库作为支撑的简单Web应用,还是围绕微服务构建一个现代应用,Spring框架都能帮助你达成目标。本章是使用Spring进行现代应用开发的第一步

1.1 什么是Spring

Spring的核心是提供了一个容器 (Container),通常称为Spring应用的上下文(Spring application context),它们会创建和管理应用组件。这些组件也可以称为bean,会在Spring应用上下文中装配在一起,从而形成一个完整的应用程序。这就像砖块、砂浆、木材、管道和电线组合在一起,形成一栋房子似的。我们在第4版中可知道我们的应用对象是生存于Spring容器中的。

将bean装配在一起的行为是通过一种基于依赖注入(dependency injection,DI)的模式实现的。此时,组件不会再去创建它所依赖的组件并管理它们的生命周期,使用依赖注入的应用依赖于单独的实体(容器)来创建和维护所有的组件,并将其注入到需要它们的bean中。通常,这是通过构造器参数和属性访问方法来实现的。

举例来说,假设在应用的众多组件中,有两个是我们需要处理的:库存服务(用来获取库存水平)和商品服务(用来提供基本的商品信息)。商品服务需要依赖于库存服务,这样它才能提供商品的完整信息。图1.1阐述这些bean和Spring应用上下文之间的关系。

                           Spring实战第五版(中文版)学习笔记-第一章 Spring起步_第1张图片

                                             图1.1 应用组件通过Spring的应用上下文来进行管理并实现互相注入

在核心容器之上,Spring及其一系列的相关库提供了Web框架、各种持久化可选方案、安全框架、与其他系统集成、运行时监控、微服务支持、反应式编程以及众多现代应用开发所需的特性。

讲bean注入到Sprng 容器中可以使用xml文件也可以通过Java配置

方式一:xml文件

该xml文件中描述了两个Bean,CmsSubjectServiceImpl和OmsOrderServiceImpl,并且通过构造器参数将CmsSubjectServiceImpl装配到OmsOrderServiceImpl中。

 



    
    
        
    

方式二:Java配置

package com.macro.mall.common;


import com.macro.mall.service.impl.CmsSubjectServiceImpl;
import com.macro.mall.service.impl.OmsOrderServiceImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BeanConfig {

    @Bean
    public CmsSubjectServiceImpl cmsSubjectService(){
       return new CmsSubjectServiceImpl();
    }
    
    @Bean
    public OmsOrderServiceImpl omsOrderService(){
       return new OmsOrderServiceImpl(cmsSubjectService());
    }
}

其中用的注解

@Configuration注解会告知Spring这是一个配置类,会为Spring应用上下文提供bean。这个配置类的方法使用@Bean注解进行了标注,表明这些方法所返回的对象会以bean的形式添加到Spring的应用上下文中(默认情况下,这些bean所对应的bean ID与定义它们的方法名称是相同的)。

相对于基于XML的配置方式,基于Java的配置会带来多项额外的收益,包括更强的类型安全性以及更好的重构能力。即便如此,不管是使用Java还是使用XML的显式配置,只有当Spring不能进行自动配置的时候才是必要的。

在Spring技术中,自动配置起源于所谓的自动装配(autowiring)和组件扫描(componentscanning)。借助组件扫描技术,Spring能够自动发现应用类路径下的组件,并将它们创建成Spring应用上下文中的bean。借助自动装配技术,Spring能够自动为组件注入它们所依赖的其他bean。

最近,随着Spring Boot的引入,自动配置的能力已经远远超出了组件扫描和自动装配。SpringBoot是Spring框架的扩展,提供了很多增强生产效率的方法。最为大家所熟知的增强方法就是自动配置(autoconfiguration),Spring Boot能够基于类路径中的条目、环境变量和其他因素合理猜测需要配置的组件并将它们装配在一起。

1.2 初始化Spring应用

第五版中使用的是Spring Initializr初始化应用,我直接使用idea来创建的Spring Boot项目

1、创建一个maven项目

Spring实战第五版(中文版)学习笔记-第一章 Spring起步_第2张图片Spring实战第五版(中文版)学习笔记-第一章 Spring起步_第3张图片

2.添加pom文件



    4.0.0

    SpringBootTest
    TestDemo
    1.0-SNAPSHOT

    
    jar

    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.4.RELEASE
        
    

    
        UTF-8
        UTF-8
    

    
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-devtools
        
        
            org.springframework.boot
            spring-boot-starter-test
        
        
            org.seleniumhq.selenium
            htmlunit-driver
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

 3.创建应用运行类

Spring实战第五版(中文版)学习笔记-第一章 Spring起步_第4张图片

@SpringBootApplication注解明确表明这是一个Spring Boot应用。但是,@SpringBootApplication远比看上去更强大。@SpringBootApplication是一个组合注解,它组合了3个其他的注解

  • @SpringBootConfiguration:该注解声明为配置类。尽管这个类目前还没有太多的配置,但是后续我们可以按需添加基于Java的Spring框架配置。这个注解实际上是@Configuration注解的特殊形式。
  • @EnableAutoConfiguration:启用Spring Boot的自动配置。我们随后会介绍自动配置的更多功能。就现在来说,我们只需要知道这个注解会告诉Spring Boot自动配置它认为我们会用到的组件。
  • @ComponentScan:启用组件扫描。这样我们能够通过像@Component、@Controller、@Service这样的注解声明其他类,Spring会自动发现它们并将它们注册为Spring应用上下文中的组件。

4。创建一个测试类

Spring实战第五版(中文版)学习笔记-第一章 Spring起步_第5张图片

@SpringBootTest会告诉JUnit在启动测试的时候要添加上Spring Boot的功能。

你可能感兴趣的:(框架学习,spring)