SpringBoot框架个人总结学习

本文介绍了Spring Boot的基础知识和入门实例,包括Spring Boot的特性、起步依赖、JDK版本变更、引导类创建、Spring MVC的Hello World实现、Tomcat启动端口修改、配置文件读取以及热部署的配置。通过这些步骤,读者可以快速上手Spring Boot框架。

1.1什么是Spring Boot

Spring 诞生时是 Java 企业版(Java Enterprise EditionJEE,也称 J2EE)的轻量级代替品。无需开发重量级的 Enterprise JavaBeanEJB),Spring 为企业级Java 开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java 对象(Plain Old Java ObjectPOJO)实现了 EJB 的功能。

虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring XML 配置,而且是很多 XML 配置。Spring 2.5 引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式 XML 配置。Spring 3.0 引入了基于 Java 的配置,这是一种类型安全的可重构配置方式,可以代替 XML。所有这些配置都代表了开发时的损耗。因为在思考 Spring 特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用程序逻辑的时间。和所有框架一样,Spring 实用,但与此同时它要求的回报也不少。

除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。

Spring Boot 让这一切成为了过去。

    Spring Boot Spring 社区较新的一个项目。该项目的目的是帮助开发者更容易的创建基于 Spring 的应用程序和服务,让更多人的人更快的对 Spring 进行入门体验,为 Spring 生态系统提供了一种固定的、约定优于配置风格的框架。

Spring Boot 具有如下特性:

1)为基于 Spring 的开发提供更快的入门体验

2)开箱即用,没有代码生成,也无需 XML 配置。同时也可以修改默认值来满足特定的需求。

3)提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。

4Spring Boot 并不是不对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。

1.2 Spring Boot入门小Demo

1.2.1起步依赖

创建Maven工程 springboot_demo(打包方式jar)  

pom.xml中添加如下依赖

  <parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

<version>1.4.0.RELEASE</version>

  </parent>  

  <dependencies>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

  </dependencies>

我们会惊奇地发现,我们的工程自动添加了好多好多jar

 

     ........

而这些jar包正式我们做开发时需要导入的jar包。因为这些jar包被我们刚才引入的spring-boot-starter-web所引用了,所以我们引用spring-boot-starter-web后会自动把依赖传递过来。

1.2.2变更JDK版本

我们发现默认情况下工程的JDK版本是1.6 ,而我们通常用使用1.7的版本,所以我们需要在pom.xml中添加以下配置

  <properties>   

    <java.version>1.7</java.version>

  </properties>

添加后更新工程,会发现版本已经变更为1.7

1.2.3引导类

只需要创建一个引导类 .

package cn.itcast.demo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

简单解释一下,@SpringBootApplication其实就是以下三个注解的总和

@Configuration 用于定义一个配置类

@EnableAutoConfiguration Spring Boot会自动根据你jar包的依赖来自动配置项目。

@ComponentScan 告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器

我们直接执行这个引导类,会发现控制台出现的这个标识

 

你能不能看出来上边这个图是什么东西?

1.2.4 Spring MVC实现Hello World输出

我们现在开始使用spring MVC框架,实现json数据的输出。如果按照我们原来的做法,需要在web.xml中添加一个DispatcherServlet的配置,再添加一个spring的配置文件,配置文件中需要添加如下配置

    <!-- 使用组件扫描,不用将controllerspring中配置 -->

<context:component-scan base-package="cn.itcast.demo.controller" />

    <!-- 使用注解驱动不用在下边定义映射器和适配置器 -->

  <mvc:annotation-driven>

  <mvc:message-converters register-defaults="true">

    <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">  

      <property name="supportedMediaTypes" value="application/json"/>

      <property name="features">

        <array>

          <value>WriteMapNullValue</value>

          <value>WriteDateUseDateFormat</value>

        </array>

      </property>

    </bean>

  </mvc:message-converters>  

</mvc:annotation-driven>

但是我们用SpringBoot,这一切都省了。我们直接写Controller

package cn.itcast.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class HelloWorldController {

@RequestMapping("/info")

public String info(){

return "HelloWorld";

}

}

我们运行启动类来运行程序

在浏览器地址栏输入 http://localhost:8080/info 即可看到运行结果

1.2.5修改tomcat启动端口

src/main/resources下创建application.properties

server.port=8088

重新运行引导类。地址栏输入

http://localhost:8088/info

1.2.6读取配置文件信息

src/main/resources下的application.properties 增加配置

url=http://www.itcast.cn

我要在类中读取这个配置信息,修改HelloWorldController  

@Autowired

private Environment env;

 

@RequestMapping("/info")

public String info(){

return "HelloWorld~~"+env.getProperty("url");

}

1.2.7热部署

我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费了大量的时间,能不能在我修改代码后不重启就能生效呢?可以,在pom.xml中添加如下配置就可以实现这样的功能,我们称之为热部署。

<dependency>  

    <groupId>org.springframework.boot</groupId>  

    <artifactId>spring-boot-devtools</artifactId>  

</dependency>  

赶快试试看吧,是不是很爽。

<think>嗯,用户问怎么高效学习Spring Boot框架。首先,我需要回想一下自己学习Spring Boot的经历,或者常见的建议。可能先要掌握Java基础,特别是Spring框架,因为Spring Boot是建立在Spring之上的。然后,学习Spring Boot的自动配置、起步依赖这些核心特性。用户可能已经有一定的Java基础,但可能需要巩固Spring的相关知识,比如IoC、AOP之类的。 接下来,应该考虑学习路径。比如,先学官方文档,因为官方文档通常最权威,而且Spring Boot的文档写得不错。然后实践项目,通过做项目来加深理解。可能还要推荐一些书籍或者在线课程,比如《Spring Boot实战》之类的。另外,社区资源也很重要,比如Stack Overflow、GitHub上的开源项目,或者中文社区如掘金、思否。 还要考虑常见的工具和生态整合,比如Spring Data JPA、Spring Security、Spring Cloud,这些在项目中常用到。可能用户想知道如何整合数据库、安全框架或者微服务。所以学习这些模块的使用方法也很重要。 另外,调试和问题解决也是学习的一部分。比如,如何查看自动配置的结果,使用Actuator监控应用,或者通过日志排查问题。可能用户遇到过配置不生效的情况,这时候需要知道怎么排查。 然后,测试部分也不能忽视,单元测试、集成测试在Spring Boot中如何编写,使用MockMvc或者Testcontainers等工具。 还有,代码实践,比如创建简单的RESTful API,逐步增加功能,使用不同的数据库,加入安全验证,甚至构建微服务。通过实际项目来应用所学知识,这样更高效。 可能用户是自学,或者已经有一定经验但想提升效率。需要分阶段建议,从基础到高级,逐步深入。同时,强调实践和理论结合,避免只看不练。 还要考虑资源推荐,比如视频教程、书籍、博客、开源项目,这些资源的选择也很重要。优质的资源能提高学习效率,避免走弯路。 最后,持续学习,关注Spring Boot的更新,参与社区讨论,写博客总结,都是巩固知识的好方法。可能用户需要长期的学习计划,而不仅仅是快速入门。 总之,整理出一个结构化的学习路线,涵盖基础知识、核心概念、实践项目、工具使用、调试测试、资源推荐等方面,帮助用户高效学习Spring Boot。</think>学习 Spring Boot 的高效方法可以分为以下几个阶段,结合理论与实践,逐步深入: --- ### **1. 前置知识巩固** - **Java 基础**:掌握面向对象、集合、多线程、反射等核心概念。 - **Spring 基础**:理解 IoC(控制反转)、AOP(面向切面)、Spring MVC 等原理(推荐《Spring 实战》)。 - **Maven/Gradle**:熟悉依赖管理、项目构建工具。 - **数据库与 SQL**:了解 MySQL、PostgreSQL 等关系型数据库,以及 JDBC 基本操作。 --- ### **2. 快速入门 Spring Boot** - **官方文档**:从 [Spring Boot 官方文档](https://spring.io/projects/spring-boot) 开始,重点阅读: - **核心特性**:自动配置(Auto-Configuration)、起步依赖(Starter Dependencies)、内嵌容器(Tomcat/Jetty)。 - **配置文件**:`application.properties`/`application.yml` 的使用。 - **搭建第一个项目**: - 使用 [Spring Initializr](https://start.spring.io/) 生成项目骨架。 - 编写简单的 RESTful API(`@RestController`, `@GetMapping`)。 --- ### **3. 系统学习核心模块** - **Web 开发**: - 掌握 `@RestController`、`@RequestMapping`、参数校验(Hibernate Validator)。 - 静态资源处理、模板引擎(Thymeleaf)或前后端分离方案。 - **数据访问**: - Spring Data JPA:实体类注解(`@Entity`)、Repository 接口(`JpaRepository`)。 - MyBatis 整合:`@Mapper` 与 XML 配置。 - 事务管理(`@Transactional`)。 - **安全控制**: - Spring Security:认证(Authentication)与授权(Authorization)。 - JWT 整合实现无状态鉴权。 - **其他常用模块**: - 缓存(`@Cacheable` + Redis)。 - 消息队列(Spring Boot + RabbitMQ/Kafka)。 - 邮件发送(`JavaMailSender`)。 --- ### **4. 实践驱动学习** - **分阶段项目实战**: 1. **初级项目**:博客系统(用户管理、文章增删改查)。 2. **中级项目**:电商平台(商品管理、订单、支付模拟)。 3. **高级项目**:微服务架构(Spring Cloud + Spring Boot,服务拆分、注册中心、网关)。 - **开源项目参考**: - GitHub 搜索 `spring-boot-demo` 或 `spring-boot-best-practice`。 - 学习企业级项目架构(如 [Pig](https://gitee.com/log4j/pig))。 --- ### **5. 调试与问题排查** - **日志分析**:配置 `Logback`/`Log4j2`,合理使用 `@Slf4j` 输出日志。 - **Actuator 监控**:启用 `/actuator` 端点监控应用健康状态。 - **自动配置原理**: - 使用 `@Conditional` 注解的条件装配机制。 - 通过 `spring-boot-autoconfigure` 源码理解默认配置。 - **常见问题**: - 依赖冲突:`mvn dependency:tree` 分析依赖树。 - 配置优先级:命令行参数 > 配置文件 > 默认值。 --- ### **6. 高效工具与资源** - **开发工具**: - IDE:IntelliJ IDEA(集成 Spring 支持)。 - API 测试:Postman 或 Swagger UI。 - 数据库管理:DBeaver 或 IDEA 内置工具。 - **学习资源**: - **书籍**:《Spring Boot 编程思想》(小马哥)、《Spring Boot 实战》。 - **视频**:B 站尚硅谷/雷神的 Spring Boot 教程。 - **社区**:Stack Overflow、掘金、Spring 官方论坛。 - **进阶方向**: - 源码分析:Spring Boot 启动流程、自动配置加载机制。 - 性能优化:连接池配置、JVM 调优、异步处理(`@Async`)。 --- ### **7. 持续提升** - **参与开源**:贡献代码或文档到 Spring Boot 生态项目。 - **技术博客**:总结学习笔记(如搭建个人博客输出技术文章)。 - **关注更新**:订阅 Spring 官方博客,了解新版本特性(如 Spring Boot 3.x 的 Native 支持)。 --- ### **学习路线示例** ``` 1. 环境搭建 → 2. 第一个 REST API → 3. 整合数据库 → 4. 实现用户认证 → 5. 添加缓存/消息队列 → 6. 部署到云服务器 → 7. 微服务改造 → 8. 源码探究 ``` --- **关键点**:避免“只看不写”,通过小步快跑的方式逐步迭代项目功能,遇到问题优先查阅官方文档,再结合社区经验解决。保持对技术原理的好奇心(如“为什么 Spring Boot 不需要 XML 配置?”),深入源码理解设计思想。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值