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应⽤上下⽂之间的关系。
图1.1 应⽤组件通过Spring的应⽤上下⽂来进⾏管理并实现互相注⼊
在核⼼容器之上,Spring及其⼀系列的相关库提供了Web框架、各种持久化可选⽅案、安全框架、与其他系统集成、运⾏时监控、微服务⽀持、反应式编程以及众多现代应⽤开发所需的特性。
讲bean注⼊到Sprng 容器中可以使⽤xml⽂件也可以通过Java配置
⽅式⼀:xml⽂件
该xml⽂件中描述了两个Bean,CmsSubjectServiceImpl和OmsOrderServiceImpl,并且通过构造器参数将CmsSubjectServiceImpl 装配到OmsOrderServiceImpl中。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/schema/beans
/schema/beans/spring-beans.xsd">
<bean id="example1" class="com.macro.mall.service.impl.CmsSubjectServiceImpl"/>
<bean id="example2" class="com.macro.mall.service.impl.OmsOrderServiceImpl">
<constructor-arg ref="example1"/>
</bean>
</beans>
⽅式⼆:Java配置
package com.macro.mallmon;
import com.macro.mall.service.impl.CmsSubjectServiceImpl;
import com.macro.mall.service.impl.OmsOrderServiceImpl;
import t.annotation.Bean;
import t.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项⽬
2.添加pom⽂件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0"
springboot中文xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>SpringBootTest</groupId>
<artifactId>TestDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<!--打包为jar包-->
<packaging>jar</packaging>
<!--Spring boot 为2.0.4版本-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncodeing>UTF-8</project.build.sourceEncodeing>
&portint.outputEncoding>UTF-8</portint.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>htmlunit-driver</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.创建应⽤运⾏类
@SpringBootApplication注解明确表明这是⼀个Spring Boot应⽤。但是,@SpringBootApplication远⽐看上去更强⼤。
@SpringBootApplication是⼀个组合注解,它组合了3个其他的注解
@SpringBootConfiguration:该注解声明为配置类。尽管这个类⽬前还没有太多的配置,但是后续我们可以按需添加基于Java的Spring框架配置。这个注解实际上是@Configuration注解的特殊形式。
@EnableAutoConfiguration:启⽤Spring Boot的⾃动配置。我们随后会介绍⾃动配置的更多功能。就现在来说,我们只需要知道这个注解会告诉Spring Boot⾃动配置它认为我们会⽤到的组件。
@ComponentScan:启⽤组件扫描。这样我们能够通过像@Component、@Controller、@Service这样的注解声明其他
类,Spring会⾃动发现它们并将它们注册为Spring应⽤上下⽂中的组件。
4。创建⼀个测试类
@SpringBootTest会告诉JUnit在启动测试的时候要添加上Spring Boot的功能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论