Spring全家桶的深入学习(一):Spring起步

目录
  • 背景
  • 学习路线图
  • Spring的基础知识
    • 什么是Spring
    • Spring框架核心模块
    • SpringBoot
    • 第一个Spring应用DEMO
    • 编写自己的第一个SpringMVC例子
    • 尝试使用Spring Boot DevTools
  • 回顾总结

背景

  • Spring早已经成为企业级开发的业界标准,尤其是Spring Boot 2.0、Spring 5发布后,Spring的生态系统引领了技术架构发展的潮流,对于Java开发人员,深入掌握Spring全家桶的各种框架应用及必要的底层原理知识,是一件非常重要的事情。

学习路线图

Spring全家桶的深入学习(一):Spring起步_第1张图片

Spring的基础知识

什么是Spring

Spring的核心是提供了一个容器(container),通常称为Spring应用上下文(Spring application context),它们会创建和管理应用组件。这些组件也可以称为bean,会在Spring应用上下文中装配在一起,从而形成一个完整的应用程序。
Spring全家桶的深入学习(一):Spring起步_第2张图片

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

Spring框架核心模块

Spring全家桶的深入学习(一):Spring起步_第3张图片

SpringBoot

在历史上,一般通过两种配置方式为Spring应用上下文提供Bean

  1. 使用一个或多个XML文件描述bean
  2. 使用@Configuration注解会告知Spring这是一个配置类

随着Spring Boot 2.x的引入,Spring自动配置的能力已经大大加强,Spring Boot能够基于类路径中的条目、环境变量和其他因素合理猜测需要配置的组件并将它们装配在一起。Java程序员尽可能多地使用Spring Boot,只有在必要的时候才使用显式配置。

第一个Spring应用DEMO
  1. 在IntelliJ IDEA中创建新项目
    Spring全家桶的深入学习(一):Spring起步_第4张图片
  2. 通过地址为https://start.spring.io/初始化项目;
    Spring全家桶的深入学习(一):Spring起步_第5张图片
  3. 指定项目通用信息:
    Spring全家桶的深入学习(一):Spring起步_第6张图片
  4. 选择项目Starter:
    Spring全家桶的深入学习(一):Spring起步_第7张图片
  5. 生成的项目结构:
    Spring全家桶的深入学习(一):Spring起步_第8张图片
  6. maven规范


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.1.RELEASE
         
    
    com.example
    demo
    0.0.1-SNAPSHOT
    demo
    Demo project for Spring Boot

    
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

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



可参见本人博客《Maven POM( Project Object Model,项目对象模型 )》及《一图说清maven常见要素》这两篇文章。

  1. 入口类
/**
* SpringBoot应用
*/
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        // 运行应用
        SpringApplication.run(DemoApplication.class, args);
    }

}

@SpringBootApplication是一个组合注解,它组合了3个其他的注解。

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

Spring全家桶的深入学习(一):Spring起步_第9张图片
8. 测试类

// SpringBoot测试
@SpringBootTest
class DemoApplicationTests {

    // 测试方法
    @Test
    void contextLoads() {
    }

}
  • 程序启动
    Spring全家桶的深入学习(一):Spring起步_第10张图片
编写自己的第一个SpringMVC例子
  • 第一个Controller

index()是一个简单的控制器方法。它带有@GetMapping注解,表明如果针对“/”发送HTTP GET请求,那么这个方法将会处理请求。该方法所做的只是返回String类型的index值,该控制器方法中还通过Spring自动注入IndexService服务组件,及调用服务组件方法。

/**
 * 第一个SpringMVC程序--Controller层
 *
 * @author zhuhuix
 * @date 2020-07-02
 */
@Controller
public class IndexController {
	// Spring注入服务组件
    @Autowired
    private IndexService indexService;

    @GetMapping("/")
    public String index(Model model) {
        String index = indexService.getIndex();
        model.addAttribute("index", index);
        // 返回视图 即index.html
        return "index";
    }
}
  • 第一个Service

getIndex()是一个简单的服务方法。该方法所做的只是返回String类型的index值,该服务组件供控制层调用。

/**
 * 第一个SpringMVC程序--Service层
 *  * @author zhuhuix
 * @date 2020-07-02
 */
@Service
public class IndexService {
    public String getIndex() {
        return "hello world!!!";
    }
}
  • 第一个View

-- 使用Thymeleaf模板引擎

### application.properties
###ThymeLeaf配置
spring:
  thymeleaf:
    #模板的模式,支持 HTML, XML TEXT JAVASCRIPT
    mode: HTML5
    #编码 可不用配置
    encoding: UTF-8
    #内容类别,可不用配置
    content-type: text/html
    #开发配置为false,避免修改模板还要重启服务器
    cache: false
    #配置模板路径,默认是templates,可以不用配置
    prefix: classpath:/templates

-- 定义index.html视图层




     
     Title

 
 

  • 运行测试
    Spring全家桶的深入学习(一):Spring起步_第11张图片
尝试使用Spring Boot DevTools

•代码变更后应用会自动重启;
•当面向浏览器的资源(如模板、JavaScript、样式表)等发生变化时,会自动刷新浏览器

  • pom.xml
	
		
            org.springframework.boot
            spring-boot-devtools
            true
            runtime
        
        ...
	
 	
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                    true
                
            
        
    
  • idea设置
    -- 需勾选Build project automaticallty
    Spring全家桶的深入学习(一):Spring起步_第12张图片
    -- ctrl+alt+shift+/ :Registry 中第一项必须打勾
    Spring全家桶的深入学习(一):Spring起步_第13张图片

回顾总结

  • Spring核心框架:Spring核心框架是Spring领域中一切的基础。它提供了核心容器和依赖注入框架。
  • Spring Boot:Spring Boot构建在Spring之上,通过简化依赖管理、自动配置和运行时洞察,使Spring更加易用;
  • Spring MVC:我们通过SpringBoot初始化生成的框架上加入Controller,Service,View的分层,编写了第一个Spring MVC程序,并成功运行。
  • 使用Idea开发环境,安装Spring Boot DevTools并进行配置,提高了开发效率。

你可能感兴趣的:(Spring全家桶的深入学习(一):Spring起步)