SpringBoot一天快速入门,超级肝货!(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 我们接着看SringBoot快速入门

上期已经了SringBoot快速入门一:


如果想看全部的,可以去看下视频,讲的更为详细:


视频的效果更好,因此视频也安排了。


全部都进行了开源:


微信图片_20221009160117.png


1 写个案例


1.1 编写 Controller 内容

@RestController 注解: 该注解是 @Controller 和 @ResponseBody 注解的合体版。

@RequestMapping 注解:访问地址。


@Controller
public class StudentController {
  @Autowired
  StudentMapper studentMapper;
  @RequestMapping("/listStudent")
  public String listStudent(Model model) {
  List<Student> students = studentMapper.findAll();
  model.addAttribute("students", students);
  return "listStudent";
  }
}

1.2  启动主程序


打开浏览器访问http://localhost:8080/hello,就可以看到效果了!


注意:我们之所以在上面的项目中没有手动的去配置 Tomcat 服务器,是因为 Spring Boot 内置了 Tomcat


2 解析 Spring Boot项目


2.1 解析pom.xml文件


我们可以看到一个比较陌生一些的标签 <parent> ,这个标签是在配置 Spring Boot 的父级依赖。有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。


2.2  应用入口类

Spring Boot 项目通常有一个名为 *Application 的入口类,入口类里有一个 main 方法, 这个 main 方法其实就是一个标准的 Java 应用的入口方法。


微信图片_20221009160418.png


@SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解,该注解组合了:@Configuration、@EnableAutoConfiguration、@ComponentScan; 若不是用 @SpringBootApplication 注解也可以使用这三个注解代替。


·  其中,@EnableAutoConfiguration 让 Spring Boot 根据类路径中的 jar 包依赖为当前项目进行自动配置,例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC 进行自动配置。


Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean ,所以入口类建议就配置在 grounpID + arctifactID 组合的包名下(这里为 cn.dahaiwuliang.springboot 包)。


3 开发环境的调试


热启动在正常开发项目中已经很常见了吧,虽然平时开发web项目过程中,改动项目启重启总是报错;但springBoot对调试支持很好,修改之后可以实时生效,需要添加以下的配置:


<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

该模块在完整的打包环境下运行的时候会被禁用。如果你使用 java -jar启动应用或者用一个特定的 classloader 启动,它会认为这是一个“生产环境”。


使用 Spring Boot 可以非常方便、快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以,所以使用 Spring Boot 非常适合构建微服务。


4 Spring Boot的配置文件

<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-devtools
</artifactId>
<optional>
true
</optional>
</dependency>
</dependencies>


4.1  配置文件基础


Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录或者类路径的 /config 下。


Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。


Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。


application.properties的配置如下所示:


server.port=8081
server.servlet.context-path=/prop

application.yml的配置如下所示:


server:
  port: 8082
  servlet:
    context-path: /yml

·注意: yml 需要在 “:” 后加一个空格。


4.2 使用@Value来获取配置属性

server:
  port: 8080
  servlet:
    context-path: /hello
name: springmeng
age: 20
controller类中:
    @Value("${name}")
    private String name;
    @Value("${age}")
    private Integer age;
    @RequestMapping("/valueMethod")
    public String value() {
        return name+age;
    }


•  注意:我们并没有在 yml 文件中注明属性的类型,而是在使用的时候定义的。


你也可以在配置文件中使用当前配置:


content: "name:${name},age:${age}"
controller类中:
@Value("${content}")
    private String content;
    @RequestMapping("/contentMethod")
    public String contentMethod() {
        return content;
    }


问题: 这样写配置文件繁琐而且可能会造成类的臃肿,因为有许许多多的 @Value 注解。


4.3 封装配置信息


我们可以把配置信息封装成一个类,首先在我们的 name 和 age 前加一个 student 前缀,然后新建一个 StudentProperties 的类用来封装这些信息,并用上两个注解:


@Component:表明当前类是一个 Java Bean

@ConfigurationProperties(prefix = "student"):表示获取前缀为 sutdent 的配置信息。


yml中:


student:
  name: 小海
  age: 19
controller中:
@Autowired
    private StudentProperties studentProperties;
    @RequestMapping("/studentMethod")
    public String studentMethod() {
        return studentProperties.getName()+studentProperties.getAge();
    }


5 Spring Boot使用


上面已经完成了 Spring Boot 项目的简单搭建,我们仅仅需要进行一些简单的设置,写一个 HelloController 就能够直接运行了。接下来我们再深入了解一下 Spring Boot 的使用。


5.1 Spring Boot支持JSP


Spring Boot 的默认视图支持是 Thymeleaf 模板引擎,但我们还是想要使用 JSP 怎么办呢?


第一步:修改 pom.xml 增加对 JSP 文件的支持:


<!-- servlet依赖. -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!-- tomcat的支持.-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
    </dependency>

第二步:配置试图重定向 JSP 文件的位置


修改 application.yml 文件,将我们的 JSP 文件重定向到 /WEB-INF/views/ 目录下:


spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

第三步:新建 JSPController


修改 @RestController 注解为 @Controller ,然后将 hello 方法修改为gotoJSP:


public String gotoJSP (Model m) {
        m.addAttribute("info", "Spring Boot后台传来的信息");
        return "jspPage";
}

第四步:新建 hello.jsp 文件


在【src/main】目录下依次创建 webapp、WEB-INF、views 目录,并创建一个 jspPage.jsp 文件:


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
HI,你好。 ${info}

5.2 集成MyBatis


第一步:修改 pom.xml 增加对 MySql和 MyBatis 的支持:


 

<!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
    </dependency>

第二步:新增数据库连接参数:


spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/spring?characterEncoding=UTF-8
    username: spring
    password: spring
    driver-class-name: com.mysql.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update  # 新增数据库连接必备的参数

第三步:创建 Student 实体类和 StudentMapper 映射类


在【cn.dahaiwuliang.springboot】下新建一个【pojo】包,然后在其下创建一个 Student 类。


public class Student {
    private Integer id;
    private String code;
    private String sname;
private Integer age;
…/* getter and setter */
}

在【cn.dahaiwuliang.springboot】下新建一个【mapper】包,然后在其下创建一个 StudentMapper 映射类:


@Mapper
public interface StudentMapper {
    @Select("SELECT * FROM student")
    List<Student> findAll();
}

第四步:编写 StudentController


在【cn.dahaiwuliang.springboot】下新建一个【controller】包,然后在其下创建一个 StudentController :


/**
 * Student 控制器
 */
@Controller
public class StudentController {
    @Autowired
    StudentMapper studentMapper;
    @RequestMapping("/listStudent")
    public String listStudent(Model model) {
        List<Student> students = studentMapper.findAll();
        model.addAttribute("students", students);
        return "listStudent";
    }
}


第五步:编写 listStudent.jsp 文件


我们简化一下 JSP 的文件,仅显示两个字段的数据:


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<table align='center' border='1' cellspacing='0'>
    <tr>
        <td>id</td>
        <td>name</td>
    </tr>
    <c:forEach items="${students}" var="s" varStatus="st">
        <tr>
            <td>${s.code}</td>
            <td>${s.sname}</td>
        </tr>
    </c:forEach>
</table>


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
11月前
|
开发框架 Java API
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
625 0
|
消息中间件 Java Kafka
SpringBoot整合 ActiveMQ快速入门 实现点对点推送
SpringBoot整合 ActiveMQ快速入门 实现点对点推送
117 0
|
XML 缓存 负载均衡
Dubbo快速入门 —— 基于SpringBoot Starter 开发微服务应用案例 + 知识讲解(下)
Dubbo快速入门 —— 基于SpringBoot Starter 开发微服务应用案例 + 知识讲解(下)
211 1
|
Dubbo Java 应用服务中间件
Dubbo快速入门 —— 基于SpringBoot Starter 开发微服务应用案例 + 知识讲解(中)
Dubbo快速入门 —— 基于SpringBoot Starter 开发微服务应用案例 + 知识讲解(中)
638 0
|
存储 Dubbo Java
Dubbo快速入门 —— 基于SpringBoot Starter 开发微服务应用案例 + 知识讲解(上)
Dubbo快速入门 —— 基于SpringBoot Starter 开发微服务应用案例 + 知识讲解(上)
775 0
|
监控 NoSQL 数据可视化
springboot快速入门一篇文章全(3)
springboot快速入门一篇文章全(3)
109 0
springboot快速入门一篇文章全(3)
|
Java 数据库连接 API
springboot快速入门一篇文章全(2)
springboot快速入门一篇文章全(2)
86 0
springboot快速入门一篇文章全(2)
|
Java 应用服务中间件 数据库连接
springboot快速入门一篇文章全(1)
springboot快速入门一篇文章全(1)
130 0
springboot快速入门一篇文章全(1)
|
开发框架 前端开发 Java
SpringBoot一天快速入门,超级肝货!(一)
目前springboot已经成为主流的框架技术,为了帮助小伙帮更快的掌握SpringBoot,我们搞了SpringBoot的快速入门。
201 0
SpringBoot一天快速入门,超级肝货!(一)