springboot学习笔记-1

文章内容简要:
1、命令行启动,打包程序
2、mvn打包去除对test代码编译,修改打包名称
3、springboot自动扫描包的配置


1、IDEA命令行可通过在项目根目录执行命令mvn spring-boot:run启动程序,ctrl+c结束运行
注意:如果提示mvn不是内部或外部命令,也不是可运行的程序或批处理文件问题说明本地没有配置maven环境变量,配置即可。
配置方式如下
变量名:MAVEN_HOME,变量值:maven安装路径,如:D:\apache-maven-3.6.3
变量名:Path,变量值:%MAVEN_HOME%\bin

2、命令行可通过执行命令mvn package打包
可在pom文件使用以下标签修改打包后的文件名称

<build>
  <finalName>application-${version}</finalName>
</build>

打包时会默认对代码test部分进行编译,可使用以下标签跳过检测

<properties>
	<maven.test.skip>true</maven.test.skip>
</properties>

也可用过以下方法实现对test代码跳过编译检查
跳过对test代码检测图片1跳过对test代码检测图片2
打包后可在项目根目录下通过该命令启动服务
java -jar target/application-0.0.1-SNAPSHOT.jar
同样可以通过ctrl+c结束运行

3、springboot扫描包机制
springboot会默认扫描启动程序application所在同级目录,以及子级目录所有带有注册注解的类@Controller,@Service,@Mapper等)
例如:下图中的目录结构,所有Demo类都加上了注解@RestController
DemoDemo2application所在包project子级目录下的类;
Demo3同级目录下的类;
Demo4是与application不同级目录的类(一个是xxx.test.Demo4,一个是xxx.project.application
启动程序后,请求DemoDemo2Demo3都可正常返回,请求Demo4的结果却是返回404,说明该类未注册成功

目录结构
目录结构
Demo类代码

@RestController
public class Demo {

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

请求Demo3结果
请求Demo3结果
请求Demo4结果
请求Demo4结果
这种情况下有两种办法可以使Demo4注册到IOC容器
第一种办法,使用@ComponentScan注解
application上使用@ComponentScan(value = "com.*.test")来指定想要注册的实体类所在包
注意:加上注解以后,之前与application所在相同包可默认注册的类,不再进行自动注册,也就是以配置的扫描包的路径为准,因此还需要加上之前DemoDemo2Demo3所在的包的路径
注册全部Demo类:
@ComponentScan(value = {"com.*.test","com.*.project"})

第二种办法,使用@SpringBootApplicationscanBasePackages属性
@ComponentScan用法相似,也需要考虑之前默认注册的问题,在application上使用,使用方法如下:
@SpringBootApplication(scanBasePackages={"com.*.test","com.*.project"})
访问Demo4
可以正常访问了!
学习参考文章:http://blog.yuqiyu.com/spring-boot-basic-default-scan-package.html?from=jianshu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值