Skip to content

04-SpringBoot 基础

对应原始资料:springBoot基础/讲义/md/SpringBoot笔记.md

一、SpringBoot 是什么

SpringBoot 不是新框架,而是简化 Spring 开发的脚手架:

  • 起步依赖:把常用依赖打包成 starter,开箱即用。
  • 自动配置:根据依赖自动装配 Bean(约定大于配置)。
  • 内嵌 Tomcat:直接 run 就能起服务,无需部署 war。
  • 生产级监控:actuator、指标、健康检查。

二、快速入门

1. 创建项目

  • IDEA → New Project → Spring Initializr。
  • https://start.spring.io
  • 选依赖:Spring Web、MyBatis Framework、MySQL Driver。

2. pom.xml

xml
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.12</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

3. 启动类

java
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

4. Controller

java
@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() { return "Hello SpringBoot!"; }
}

浏览器访问 http://localhost:8080/hello 即可。

三、配置文件

1. application.yml(推荐)

yaml
server:
  port: 8080
  servlet:
    context-path: /api

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

my:
  app:
    name: demo
    version: 1.0

2. 多环境配置

  • application.yml:通用。
  • application-dev.yml:开发环境。
  • application-prod.yml:生产环境。
  • 在主配置 spring.profiles.active=dev 激活。

3. 读取配置

java
@Value("${my.app.name}")
private String appName;

@ConfigurationProperties(prefix = "my.app")
@Component
@Data
public class AppConfig {
    private String name;
    private String version;
}

四、SSM 整合(重点)

1. 依赖

xml
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.16</version>
</dependency>

2. yml 配置

yaml
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql:///db1
    username: root
    password: 123456

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.itheima.entity
  configuration:
    map-underscore-to-camel-case: true   # 下划线转驼峰

3. Mapper

java
@Mapper                                    // 标记为 MyBatis Mapper
public interface UserMapper {
    List<User> findAll();
}

XML 放 resources/mapper/UserMapper.xml

4. Service / Controller

java
@Service
public class UserServiceImpl implements UserService {
    @Autowired private UserMapper userMapper;
    public List<User> findAll() { return userMapper.findAll(); }
}

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired private UserService userService;
    @GetMapping
    public List<User> list() { return userService.findAll(); }
}

5. 开启事务

启动类加 @EnableTransactionManagement,service 方法加 @Transactional

五、常用整合

1. 热部署 devtools

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

2. 整合 JUnit

java
@SpringBootTest
class UserServiceTest {
    @Autowired private UserService userService;
    @Test void test() { userService.findAll(); }
}

3. 整合日志

SpringBoot 默认用 Logback,配置文件直接写:

yaml
logging:
  level:
    com.itheima: debug
    root: info
  file:
    name: logs/app.log

六、打包与运行

bash
mvn clean package
java -jar target/app.jar --spring.profiles.active=prod

可在命令行覆盖任何配置:--server.port=9090

七、SpringBoot vs 原生 Spring

维度原生 Spring + SpringMVCSpringBoot
配置XML / 注解大量自动配置,少量 yml
部署打 war 部 Tomcat打 jar 直接跑
依赖手动管理版本starter 自动管理
起步麻烦一个 main 方法

练习建议

  1. 用 Spring Initializr 创建项目,跑通 hello。
  2. 整合 MyBatis 完成用户 CRUD(RESTful)。
  3. 配置 dev/prod 两套环境,命令行切换。
  4. @ConfigurationProperties 读取自定义配置。
  5. 打 jar 包并用 java -jar 运行。