美文网首页
一步步学习 《Spring 实战 第5版》--(3)Spring

一步步学习 《Spring 实战 第5版》--(3)Spring

作者: 漫天秋风 | 来源:发表于2020-07-02 17:49 被阅读0次

    spring的基本原理在《实战》前几版中的介绍比较多,而《实战第5版》中做了简化,仅有一小节的概念讲解。现在结合第五版的介绍,对spring的基本原理做个理解。

    一、 容器依赖注入

    Spring提供了一个容器来运行应用,这个容器也被称为应用上下文。它们会创建和管理应用组件,这些组件就称为bean。多个bean就组成了一个应用程序,来完成应用程序的功能。

    Bean的是怎么产生的。Bean可以理解为就是类的实例化,就是new 一个class出来。Bean是通过容器来实例化的,默认是采用单例的方式,一个类只创建一个实例。

    Bean产生好了就要用起来。这个用起来的动作就叫装配,而装配是采用依赖注入的方式。依赖注入,简单说就是在你需要用到这个类的时候直接就能用,而且用的时候不用再去new它了,容器都已经帮你new好了。依赖注入的好处就是将实例的创建场景和使用场景分离,不用在使用的时候再去new了。需要什么工具直接找工厂要就行了,工厂都给你造好了。

    依赖注入的声明可以通过构造函数或者属性访问来实现,一般在属性里面声明的比较多。在属性中声明,只要加上@Autowired注解就可以了。

    二、 配置

    bean的装配是通过配置来实现的。把一个类配置好了,spring容器就会去装配它。

    配置的方式在Spring的历史上有很多种。

    很早是用xml来配置的,在xml里声明要装配哪个类,装配成什么名字。xml配置有个问题,就是类越多,xml文件就会很多很长,xml文件群会变的很庞大,难以维护。

    后来很多是用Java来配置。例如下面,@Configuration注解会告诉spring,下面是一个配置类。

    @Configuration
    public class ServiceConfiguration {
    
    @Bean
    public InventoryService inventoryService() {
    return new InventoryService();
    }
    
    @Bean
    public ProductService productService() {
    return new ProductService(inventoryService());
    }
    }
    

    无论是xml还是Java方式,都是一种显式的配置,在新的Spring技术中已经不再必要。

    Spring借助自动装配和组件扫描技术,已经实现了自动配置。它能够在项目路径下搜索组件,并装配成bean。正如系列的第二篇文章提到的@SpringBootApplication注解,就是声明了自动配置功能。

    Spring boot不仅在配置,而且依赖方面也做了大量的优化工作。例如在POM文件的 依赖声明中,依赖ID中会带有“starter”关键字,如下:

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>
    

    "starter"的作用,就是Spring boot会根据项目的需要,将一组最优的依赖组合打包提供给用户,不需要用户再手工将一个个依赖库分别加入项目了。

    三、 下一步

    本章讲解了Spring的基础概念,讲的非常粗略,只是希望能够对spring项目有个大概的认识。前面搭建了一个没有任何功能的应用程序,后续将继续完成一个带页面的简单web应用。

    相关文章

      网友评论

          本文标题:一步步学习 《Spring 实战 第5版》--(3)Spring

          本文链接:https://www.haomeiwen.com/subject/nrnrqktx.html