springboot的项目创建和常用注解

创建springboot项目:

首先更改一下url,点击小齿轮改成https://start.aliyun.com/

首先在选模块的时候选上SpringWeb,然后jdk1.8对应的springboot版本是2.6.13或者2.7.6

pom.xml:

用1.8的jdk,mybatis的包版本不能太高

 <!--            mybatis包-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>
        <!--            mysql驱动包-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.3.0</version>
        </dependency>

application.yml:

这里给resultType起别名,扫描xml文件,stdout打印

server:
  port: 8080
  #数据库连接
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/aatest?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root

    #mybatis配置相关:起别名,扫描xml文件,stdout打印
mybatis:
  type-aliases-package: com.hz.springtest01.pojo
  mapper-locations: classpath:/mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Springtest01Application.java:

@SpringBootApplication注解自动扫描controller包和service包

@MapperScan扫描mapper这个接口包

@SpringBootApplication
@MapperScan("com.hz.springtest01.mapper")
public class Springtest01Application {

    public static void main(String[] args) {

        SpringApplication.run(Springtest01Application.class, args);
    }

}

使用jar包运行springboot项目:

首先要在pom.xml中用<classifier> </classifier>标签给mainClass这个标签加上后缀

不然会生成两个相同的包,这两个包因为重名会自动覆盖,所以要给这个包加上后缀

然后先使用clean把target包删除,然后再打包,控制台有路径

然后在相应路径下使用

java -jar  包名称

springboot配置外部容器:

先把内置的tomcat去除掉

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--移除tomcat-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>

springboot的注解:

这四个注解用来允许通过外部配置 来创建bean:
@Bean@Value
@Configuration
@PropertySource
@ConfigurationProperties(prefix = "chmy")

prefix 用于指定从配置文件中获取属性的前缀 "chmy"

chmy.yml

chmy:
  name: "陈梦雨"
  age: 18

AppBootConfig.java

@PropertySource("classpath:chmy.yml") //读取文件
@ConfigurationProperties(prefix = "chmy") //前缀
@Configuration //容器启动时加载
public class AppBootConfig {
    @Value("${name}")
    private String name;
    @Value("${age}")
    private int age;

    @Bean("chmy")
    public  Chmy infoChmy(){
        Chmy chmy = new Chmy();
        chmy.setName(name);
        chmy.setAge(age);
//        将对象放入spring容器中
        return chmy;
    }
}

ChmyController.java

@RestController
@RequestMapping("/chmy")
public class ChmyController {

    @Resource
    private Chmy chmy;
    @GetMapping("/chmy")
    public ResultJSON chmy(){
        System.out.println(chmy.toString());

        // 返回封装后的结果
        return  ResultJSON.success();
    }
}

@ComponentScan:扫包

注意:

@SpringBootApplication注解也包含了三个注解:

  • @EnableAutoConfiguration:启用自动配置。
  • @ComponentScan:启用组件扫描。
  • @Configuration:标记该类为配置类。

也可以用@SpringBootApplication注解scanBasePackages属性进行配置

@SpringBootApplication(scanBasePackages ={"com.hz.service","com.hz.controller"})

@EnableTransactionManagement:开启事务注解

@MapperScan("com.hz.dao"):扫描mapper接口

application.yml的其他情况:

这个dev表示当前环境是开发环境,改成test就是测试环境

spring:
  profiles:
     active: dev #引入后缀为dev的文件

SpringBoot配置文件——加载顺序

如果在不同的目录中存在多个配置文件,它的读取顺序是:

1、config/application.properties(项目根目录中config目录下)

2、config/application.yml

3、application.properties(项目根目录下)

4、application.yml

5、resources/config/application.properties(项目resources目录中config目录下)

6、resources/config/application.yml

7、resources/application.properties(项目的resources目录下)

8、resources/application.yml

@CrossOrigin:跨域请求

全局异常捕获:

在java下创建包exception,并创建文件GlobalException

这样就会输出报错的json数据,而不是那种空白页面

@ControllerAdvice(basePackages = "com.hz.springtest01")
@Slf4j
public class GlobalException {
    @ExceptionHandler(RuntimeException.class)
    @ResponseBody
    public ResultJSON handleException(RuntimeException e){
        log.error("系统异常:",e);
        return ResultJSON.error("请求失败:"+e);
    }
}

自定义异常:

就直接继承 RuntimeException,然后生成一个传入String的构造方法,就可以自定义了

public class IdException extends RuntimeException{
    public IdException(String message) {
        super(message);
    }
}

触发这个异常:这样就会在id=4的时候有这种

        if (id==4){
            throw new IdException("ID不能为4");
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/939628.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flask_socketio 以继承 Namespace方式实现一个网页聊天应用

点击进入上一篇&#xff0c;可作为参考 实验环境 python 用的是3.11.11 其他环境可以通过这种方式一键安装&#xff1a; pip install flask3.1.0 Flask-SocketIO5.4.1 gevent-websocket0.10.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pip list 详情如下&am…

笔记本重装系统教程【详细教程】

一、装机前说明 各位有装机需求的伙伴&#xff0c;请根据自己的电脑配置选择合适操作系统&#xff0c;可以实现自己装机的伙伴&#xff0c;相信大家这点可以确认好。 ———————————————————————— 我的配置&#xff1a; 我的电脑是联想拯救者lenovoY7000…

uniapp入门 01创建项目模版

0安装 hbuilder x 标准版 1.创建模版工程 2.创建官方 案例工程 index.uvuewen 文件解析 <!-- 模版 标签 --> <template><view></view></template><!-- 脚本 --> <script>export default {data() {return {}},onLoad() {},methods:…

ARCGIS国土超级工具集1.2更新说明

ARCGIS国土超级工具集V1.2版本&#xff0c;功能已增加至47 个。在V1.1的基础上修复了若干使用时发现的BUG&#xff0c;新增了"矢量分割工具"菜单&#xff0c;同时增加及更新了了若干功能&#xff0c;新工具使用说明如下&#xff1a; 一、勘测定界工具栏更新界址点成果…

Vue3源码笔记阅读1——Ref响应式原理

本专栏主要用于记录自己的阅读源码的过程,希望能够加深自己学习印象,也欢迎读者可以帮忙完善。接下来每一篇都会从定义、运用两个层面来进行解析 定义 运用 例子:模板中访问ref(1) <template><div>{{str}}</div> </template> <script> impo…

[react] 优雅解决typescript动态获取redux仓库的类型问题

store.getState()是可以获取总仓库的 先拿到函数的类型 再用ReturnType<T> 它是 TypeScript 中的一个内置条件类型&#xff0c;用于获取某个函数类型 T 的返回值类型 代码 // 先拿总仓库的函数类型type StatefuncType typeof store.getState;//再拿函数类型T的返回值类…

【Qt】QWidget中的常见属性及其功能(一)

目录 一、 enabled 例子&#xff1a; 二、geometry 例子&#xff1a; window fram 例子 &#xff1a; 四、windowTiltle 五、windowIcon 例子&#xff1a; qrc机制 创建qrc文件 例子&#xff1a; qt中的很多内置类都是继承自QWidget的&#xff0c;因此熟悉QWidget的…

R语言的字符串操作

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言医学数据分析实践-R语言的数据结构-CSDN博客 在R语言中&#xff0c;字符串是一种表示文本数据的数…

webGL硬核知识:图形渲染管渲染流程,各个阶段对应的API调用方式

一、图形渲染管线基础流程概述 WebGL 的图形渲染管线大致可分为以下几个主要阶段&#xff0c;每个阶段都有其特定的任务&#xff0c;协同工作将 3D 场景中的物体最终转换为屏幕上呈现的 2D 图像&#xff1a; 顶点处理&#xff08;Vertex Processing&#xff09;阶段&#xff1…

《深入浅出Apache Spark》系列⑤:Spark SQL的表达式优化

导读&#xff1a;随着数据量的快速增长&#xff0c;传统的数据处理方法难以满足对计算速度、资源利用率以及查询响应时间的要求。为了应对这些挑战&#xff0c;Spark SQL 引入了多种优化技术&#xff0c;以提高查询效率&#xff0c;降低计算开销。本文从表达式层面探讨了 Spark…

创建项目以及本地仓库和远程仓库并上传项目

创建项目以及本地仓库和远程仓库并上传项目 其详细流程如下&#xff1a; 1、本地创建项目 2、创建本地仓库&#xff08;若使用idea在创建项目时选择了创建.git本地仓库&#xff0c;则此步骤省略&#xff09; 进入到你需要上传的项目的目录下&#xff0c;右键找到Git Bah He…

快速解决oracle 11g中exp无法导出空表的问题

在一些生产系统中&#xff0c;有些时候我们为了进行oracle数据库部分数据的备份和迁移&#xff0c;会使用exp进行数据的导出。但在实际导出的时候&#xff0c;我们发现导出的时候&#xff0c;发现很多空表未进行导出。今天我们给出一个快速解决该问题的办法。 一、问题复现 我…

MySQL八股-MVCC入门

文章目录 当前读&#xff08;加锁&#xff09;快照读&#xff08;不加锁&#xff09;MVCC隐藏字段undo-log版本链A. 第一步B.第二步C. 第三步 readview MVCC原理分析RCA. 先来看第一次快照读具体的读取过程&#xff1a;B. 再来看第二次快照读具体的读取过程: RR隔离级别 当前读…

【已解决】启动此实时调试器时未使用必需的安全权限。要调试该进程,必须以管理员身份运行此实时调试器。是否调试该进程?

【已解决】启动此实时调试器时未使用必需的安全权限。要调试该进程&#xff0c;必须以管理员身份运行此实时调试器。是否调试该进程? 目录一、前言二、具体原因三、解决方法 目录 报错截图 一、前言 进行应用程序开发时&#xff0c;需要对w3wp进行附加调试等场景&#xff…

基于Qt的登陆界面设计

目标 自由发挥登录界面的应用场景&#xff0c;实现一个登录窗口的界面。 要求&#xff1a;每行代码都要有注释 代码 // 设置窗口大小为600x400像素 this->resize(600,400); // 设置窗口标题为"TheWitcher 巫师3&#xff1a;狂猎" this->setWindowTitle(&qu…

Elasticsearch 8.x 集成与 Java API 使用指南

目录 背景 版本区别 安装elaticsearch8.x服务 启动es服务 安装es管理平台 项目集成 pom.xml文件引入依赖 application.yml配置 ES初始化配置类实现 ES8.x常用API实现 1.判断es索引是否存在 2.删除索引 3.创建索引 4.新增文档 5.更新文档 6.根据id查询文档 7.根…

EfficientNet模型Pytorch版本具体实现

EfficientNet模型原理&#xff1a;EfficientNet&#xff1a;对模型深度、宽度和分辨率的混合缩放策略-CSDN博客 一、激活函数&#xff1a; EfficientNet模型使用了Swish激活函数而不是更常见的Relu激活函数 1、公式定义 Swish(x) x * sigmoid(x)是一个平滑的非线性激活函数…

Git连接远程仓库(超详细)

目录 一、Gitee 远程仓库连接 1. HTTPS 方式 2. SSH公钥方式 &#xff08;1&#xff09;账户公钥 &#xff08;2&#xff09;仓库公钥 仓库的 SSH Key 和账户 SSH Key 的区别&#xff1f;​ 二、GitHub远程仓库连接 1. HTTPS方式 2.SSH公钥方式 本文将介绍如何通过 H…

AutoMQ 流表一体新特性 Table Topic 发布: 无缝集成 AWS S3 Table 和 Iceberg

超越共享存储&#xff1a;使用 Apache Iceberg 中的 AutoMQ Table Topic 实现流处理与分析的统一 自 2023 年底官宣以来&#xff0c;AutoMQ 成功地将 Apache Kafka 从“Shared Nothing architecture”转变为“Shared Storage architecture”&#xff0c;这为京东、知乎、小红书…

Upload-labs 靶场(通关攻略)

WebShell 一句话木马: <?php eval($_POST[a])?> <?php system($_POST[a])?> 第一关&#xff08;删除前端js校验&#xff09; 删除return checkFile() 就能上传成功 第二关(抓包文件类型校验) BP抓包修改后缀 改为2.php后放行 第三关(上传php同种类型的不…