Springboot 项目启动类放置位置

news2024/12/27 20:03:40

文章目录

    • Springboot 项目启动类放置位置
      • springboot 默认包扫描机制
      • 启动类放在特定位置
      • springboot 启动注解理解
      • 配置启动类扫描特定的包
        • 1、 @ComponentScan
        • 2、利用 @SpringBootApplication 注解的 scanBasePackages 属性

Springboot 项目启动类放置位置

如果我们使用 IDEA 或者 Spring 官网创建 springboot 项目,他会自动将启动类 XxxApplication 放到一个包下面。但是如果想要自己将启动类放在某个位置,那么又将如何操作?

springboot 默认包扫描机制

首先,我们要知道 springboot 默认包扫描机制:默认扫描启动类所在的包同级文件和子包下的文件

springboot 的启动类是不能直接放在 main/java 文件夹下,所在的包是最顶部的包

如下图所示,所有的项目代码都在 com.cuiyuidong.learn 包下,那么把启动类 IntroductionSpringSecurity 放在 com.cuiyuidong.learn 下面就可以扫描到 learn 包下面的所有代码。

启动类配置如下:只需要加上 @SpringBootApplication 注解即可

package com.cuiyuidong.learn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class IntroductionSpringSecurity {

    public static void main(String[] args) {
        SpringApplication.run(IntroductionSpringSecurity.class,args);
    }
}

在这里插入图片描述

启动类放在特定位置

有时候我们希望把启动类放在同一个特定的位置,但是由于默认包扫描机制,如果我们将启动类放在自己设定的特定位置而不作一些特定配置,那么启动类则不会扫描到所有的包。

如下图所示,将启动类放在 ApplicationSetUp 包下面,启动项目,同时在 Controller 包下创建一个 SpringSecurityController 类,代码如下:

package com.cuiyuidong.learn.Controller;

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

@RestController
public class SpringSecurityController {

    @GetMapping(value = "/hello")
    public String hello(){
        return "world hello";
    }
}

在这里插入图片描述

测试结果:会发现测试结果是 404 Not Found。因为启动类没有扫描到 Controller 这个包。那么要如何解决这个问题呢?

在这里插入图片描述

springboot 启动注解理解

使用 @SpringBootApplication 标注的类是 SpringBoot 的主配置类。核心注解是以下三个:

1. @SpringBootConfiguration 标注在某个类上,表示该类是SpringBoot的配置类
2. @EnableAutoConfiguration 以前我们需要配置的东西,在SpringBoot启动后会帮我们自动配置
3. @ComponentScan 用于通过注解指定spring在创建容器时要扫描的包

配置启动类扫描特定的包

根据上面 springboot 启动注解理解,我们可以通过注解配置扫描特定的包。

1、 @ComponentScan

代码如下: 在启动类上加上 @ComponentScan 注解,同时加上要扫描的包 @ComponentScan(basePackages = "com.cuiyuidong.learn.*"),当然也可以具体到某一个包 @ComponentScan(basePackages = "com.cuiyuidong.learn.Controller")

需要注意的是,如果包下面有很多子包,如 learn 包,那么可以用通配符 .*

package com.cuiyuidong.learn.ApplicationSetUp;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = "com.cuiyuidong.learn.*")
public class IntroductionSpringSecurity {

    public static void main(String[] args) {
        SpringApplication.run(IntroductionSpringSecurity.class, args);

    }
}

测试结果:

在这里插入图片描述

2、利用 @SpringBootApplication 注解的 scanBasePackages 属性

代码如下:

package com.cuiyuidong.learn.ApplicationSetUp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages = {"com.cuiyuidong.learn.*"})
public class IntroductionSpringSecurity {

    public static void main(String[] args) {
        SpringApplication.run(IntroductionSpringSecurity.class, args);

    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

torch.nn.functional.log_softmax 函数解析

该函数将输出向量转化为概率分布,作用和softmax一致。 相比softmax,对较小的概率分布处理能力更好。 一、定义 softmax 计算公式: log_softmax 计算公式: 可见仅仅是将 softmax 最外层套上 log 函数。 二、使用场景 log_soft…

【算法训练营】参数解析+跳石板

🌈欢迎来到Python专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mys…

元宇宙3D云展厅应用到汽车销售的方案及特点

为了紧紧抓住年轻消费者的需求,汽车销售行业也正在经历一场深刻的变革。在这个变革的前沿,元宇宙3D汽车展厅作为一项全新技术闪亮登场,打破了传统汽车销售模式的限制,为消费者带来了前所未有的购车体验。 元宇宙3D汽车展厅采用了尖…

竞赛选题 深度学习驾驶行为状态检测系统(疲劳 抽烟 喝水 玩手机) - opencv python

文章目录 1 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的驾…

java每日一记 —— 谈谈反射

这应该是基础吧 1.先来说点前置知识:类的加载机制2.以自己的方式来谈反射的概念3.获取class的三种方式3.1.通过已知的类型获取class3.2.通过实例对象获取class3.3.通过Class.forName获取全路径指定类名的class 4.整理了一下API:坦言说🪡累5.现…

【腾讯云云上实验室-向量数据库】TAI时代的数据枢纽-向量数据库 VectorDB

一、向量数据库的发展历程和时代机遇 回顾向量数据库的发展历程: 2012年开始,深度神经网络的发展催生了向量数据库的发展;2015年至2016年,Google和微软发布了标志性的论文;2017年,Facebook开源了Faiss框架…

【具身智能评估1】具身视觉语言规划(EVLP)仿真环境汇总

参考论文:Core Challenges in Embodied Vision-Language Planning 论文作者:Jonathan Francis, Nariaki Kitamura, Felix Labelle, Xiaopeng Lu, Ingrid Navarro, Jean Oh 论文原文:https://arxiv.org/abs/2106.13948 论文出处:Jo…

文心一言-情感关怀之旅

如何让LLM更有温度。 应用介绍

猜数字优化版(带进度条)

其实就是加了个动态进度条显示加载游戏的流程&#xff0c;这样看上去是不是更有big了hhhh #include<windows.h> #include<iostream> #include<ctime> using namespace std; void menu() {printf("1.开始游戏\n");printf("0.退出游戏\n")…

PP-YOLOE: An evolved version of YOLO(2022.12)

文章目录 Abstract1. Introduction2. Method2.1. A Brief Review of PP-YOLOv22.2. Improvement of PP-YOLOEAnchor-freeBackbone and NeckTask Alignment Learning (TAL)Efficient Task-aligned Head (ET-head) 3.Experiment4. Conclusion 原文链接 源代码 Abstract 在本报告…

恕我直言,大模型对齐可能无法解决安全问题,我们都被表象误导了

是否听说过“伪对齐”这一概念&#xff1f; 在大型语言模型&#xff08;LLM&#xff09;的评估中&#xff0c;研究者发现了一个引人注目的现象&#xff1a;当面对多项选择题和开放式问题时&#xff0c;模型的表现存在显著差异。这一差异根源在于模型对复杂概念的理解不够全面&…

Python hashlib 模块详细教程:安全哈希与数据完整性保护

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享 Python hashlib 模块详细教程&#xff0c;文章6500字&#xff0c;阅读大约17分钟&#xff0c;大家enjoy~~ hashlib模块为Python提供了一种简便的方式来使用各种哈希算法&…

ACM练习——第五天

还有两天就要比赛了&#xff0c;进入正题吧 题目一&#xff1a;小红的签到题 小红的签到题 (nowcoder.com) 这道题也就是热身水平&#xff0c;机会很清楚的发现只需要c/a就可以得出答案了 参考代码&#xff1a; #include <iostream>using namespace std;int main(){int a…

SecureCRT的“New line mode“

New line mode选中与不选中啥区别 在SecureCRT中&#xff0c;"New line mode"是一个关键配置项&#xff0c;主要用于解决不同操作系统之间的换行问题。当不选中"New line mode"时&#xff0c;SecureCRT会将接收到的数据按照原样发送&#xff0c;不会对数据…

腾讯智影数字人工具

腾讯智影数字人工具 腾讯智影数字人的形象风格多样&#xff0c;包括写实、卡通等&#xff0c;可以满足不同年龄层观众的喜好。同时&#xff0c;腾讯智影数字人也提供了灵活的驱动方案&#xff0c;可以通过文本或配音直接生成视频&#xff0c;并支持数字人做出与视频一样的动作…

计算机网络——WLAN简解

1. WLAN的发展历程 ❓ WLAN和WIFI有什么区别。 &#x1f604; 具体来说&#xff0c;WALN是抽象的概念&#xff0c;代表这无线局域网这一类技术&#xff0c;而WIFI则是具体的具体技术标准&#xff0c;虽然在生活中&#xff0c;二者的表现是强相关的&#xff08;因为是使用的wifi…

talbay---贝叶斯网络分析工具产品介绍

一 简介 talbay是拥有独立知识产权的国产软件&#xff0c;主要功能是贝叶斯网络建模、决策网络建模、概率计算、决策支持、敏感性分析、网络模型验证、机器学习等。talbay以用户为中心&#xff0c;简单易用, 计算准确高效&#xff0c;分析全面多样&#xff0c;在应用成熟理论及…

基础模型的自然语言处理能力综述

NLP作为一个领域为基础模型开辟了道路。虽然这些模型在标准基准测试中占据主导地位&#xff0c;但这些模型目前获得的能力与那些将语言描述为人类交流和思维的复杂系统的能力之间存在明显的差距。针对这一点&#xff0c;我们强调语言变异的全部范围&#xff08;例如&#xff0c…

西南科技大学814考研一

C语言基础 字节大小 char&#xff1a;1 字节 unsigned char&#xff1a;1 字节 short&#xff1a;2 字节 unsigned short&#xff1a;2 字节 int&#xff1a;通常为 4 字节&#xff08;32 位平台&#xff09;或 8 字节&#xff08;64 位平台&#xff09; unsigned int&#x…

汽车音响静音检测电路芯片D3703F,适用于汽车音响系统,采用封装形式SOP8

D3703F是-块汽车音响静音检测电路。用于音响系统检测在放音或快进/退时进行静音检测。D3703F的电压范围: 6V~16V&#xff0c; 信号检测和静音时间可通过外围电阻、电容来改变。 主要特点&#xff1a; ● 快进退时也可进行静音检测 ● 信号检测和静音时间可通过外围元件值来改…