当前位置: 首页 > article >正文

Spring Boot 配置全流程 总结

1. 简介

Springboot可以简化SSM的配置,提高开发效率。

2. 代码

在pom.xml中添加:

<parent>
    <!-- 包含SSM常用依赖项 -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.5</version>
</parent>

<dependencies>
  <dependency>
    <!-- 启动器,包含SSM常用依赖项 -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>

在Main.java中添加:

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class,args);//自动创建ioc容器,启动内置tomcat
    }
}

创建统一配置文件:
resources/application.properties:

# 使用内置配置项
# 重设默认端口8080
server.port = 8081
# 重设默认根路径/
server.servlet.context-path=/good

# 自定义配置
good.name = jojo

或者application.yaml文件:

# 层次化结果,通过缩进解决包含关系
server:
  port: 80
  servlet:
    context-path: /book

good:
  name: jojo

创建业务:

@RestController
@RequestMapping("hello")
//@ConfigurationProperties(prefix = "good")也可以通过注解获取配置文件中的自定义变量,可以读取集合,不需要@Value注解,注意必须包含前缀和变量同名
public class HelloController {

    @Value("${good.name}")//直接访问统一配置文件中的自定义变量,不能读取集合
    private String name;
    @GetMapping("good")
    public String good(){
     	System.out.println(goodName);
        return "hello";
    }
}

3. 配置文件选择

在application.yaml包含:

#同时激活application-test.yaml和application-dev.yaml的配置
spring:
  profiles:
    active: test,dev

在application-test.yaml包含:

good:
  name: dev

在application-dev.yaml包含:

good:
  id: 1234

也可以二选一:
在application.yaml包含:

#只激活application-test.yaml
spring:
  profiles:
    active: test

如果属性重复以最后包含的文件为准。

4. 静态资源

静态资源可放在/resources/static下。访问时不用写static前缀。

5. 拦截类

拦截类还是需要自己添加配置类:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor());
    }
}


6. Mybatis

在pom.xml加入依赖:

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

  <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.1</version>
  </dependency>

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

  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>1.2.18</version>
  </dependency>

  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
  </dependency>

</dependencies>

Main.java:

@MapperScan("com.jojo.mapper") //mapper接口所在的的位置
@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class,args);
    }
}

application.yaml:

mybatis:
  mapper-locations: classpath:/mappers/*.xml  #指定xml文件的位置
  type-aliases-package: com.jojo.pojo
  configuration:
    map-underscore-to-camel-case: true
    auto-mapping-behavior: full
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl

7. 声明式事务

在pom.xml加入以下依赖后,就可以使用@Transactional了

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

8. AOP

在pom.xml加入以下依赖后,正常创建切面类就行

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

9. 打包

在pom.xml加入以下插件

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

在Maven中点击package命令:
在这里插入图片描述
将target中生成的jar包拷贝到服务器,执行以下命令就可独立运行了:

java -jar xxx.jar

也可以修改yaml中的参数,如修改port号,切换yaml文件等:

 java -jar -Dserver.port=1234 -Dspring.profiles.active:test xxx.jar

http://www.kler.cn/news/319474.html

相关文章:

  • 视频转文字工具:开启视频内容深度挖掘的钥匙
  • centos7 docker部署nacos
  • HCIA--实验十七:EASY IP的NAT实现
  • 拒绝信息泄露!VMD滚动分解 + Informer-BiLSTM并行预测模型
  • PyFluent常用代码 1
  • QT开发模式(二):QML/JS/C++混合编程
  • 中国电子学会202312青少年软件编程(Python)等级考试试卷(四级)真题
  • 基于VUE的医院抗生素使用审核流程信息化管理系统
  • 前端如何实现截图?
  • webView2 隐藏滚动条
  • 【数据结构初阶】排序算法(上)插入排序与选择排序
  • echarts实现地图下钻并解决海南群岛显示缩略图
  • 【数学分析笔记】第3章第4节闭区间上的连续函数(1)
  • 外包干了5天,技术退步明显.......
  • 换脸黑科技FaceFusion 3.0(Windows Mac整合包)震撼来袭!
  • 初识网络编程(上)
  • 焊接缺陷检测系统源码分享
  • mysql数据库 - anolisos安装
  • Facebook Marketplace无法使用的原因及解决方案
  • Liblib:简化开发的强大工具
  • Leetcode 环形链表
  • C标准库<string.h>-str、strn开头的函数
  • 力扣 438找到字符串中所有字母异位词
  • 2024 Snap 新款ar眼镜介绍
  • SDKMAN!关联已安装JDK
  • neo4j:ubuntu环境下的安装与使用
  • 胤娲科技:DeepMind的FermiNet——带你穿越“薛定谔的早餐桌”
  • uniapp 中uni.showModal添加输入框
  • 828华为云征文|华为云Flexus云服务器X实例部署immich相片管理系统
  • 接口自动化测试框架实战(Pytest+Allure+Excel)