<properties>
<mysql.version>5.1.49mysql.version>
properties>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
在开发中我们经常会用到 spring-boot-starter-xxx ,比如 spring-boot-starter-web,该场景是用作 web 开发,也就是说 xxx 是某种开发场景。
我们只要引入 starter,这个场景的所有常规需要的依赖我们都自动引入。
SpringBoot2 支 持 的 所 有 场 景 如 下 : https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
3. 也就是说:xxx-spring-boot-starter 是第三方为我们提供的简化开发的场景启动器
@SpringBootApplication
public class MainApp {
public static void main(String[] args) {
ConfigurableApplicationContext ioc = SpringApplication.run(MainApp.class, args);
String[] beanDefinitionNames = ioc.getBeanDefinitionNames();
//查看容器里面的组件名称
for (String beanDefinitionName : beanDefinitionNames) {
System.out.println(beanDefinitionName);
}
}
}
https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.structuring-your-code.using-the-default-package
进行测试我们发现是不能访问到HelloController的,因为SpringBoot默认的包扫描是主启动类所在包及其子包,而HelloController.java不在扫描的包内,无法注入到Spring容器中,SpringMVC也没有相关的路径映射配置因此是找不到的。由此引入一个问题,如何修改SpringBoot默认的包扫描机制呢
3. 修改 MainApp.java, 增加扫描的包, 并完成测试
// 直接在 SpringBootApplication 注解后指定扫描的包,在该报下的组件会被注入到spring容器中
@SpringBootApplication(scanBasePackages = {"com"})
public class MainApp {
public static void main(String[] args) {
ConfigurableApplicationContext ioc = SpringApplication.run(MainApp.class, args);
String[] beanDefinitionNames = ioc.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
System.out.println(beanDefinitionName);
}
}
}
修改后,再次测试
SpringBoot 项目最重要也是最核心的配置文件就是 application.properties,所有的框架配 置都可以在这个配置文件中说明,在开发中有不熟悉的配置可以参考
地址: https://blog.csdn.net/pbrlovejava/article/details/82659702
● 各 种 配 置 都 有 默 认 , 可 以 在 resources\application.properties 修 改 , application.properties 文件我们可以手动创建
#默认 server.port=8080
server.port=10000
#比如: 默认 spring.servlet.multipart.max-file-size=1MB #该属性可以指定 springboot 上传文件大小的限制
# 默认配置最终都是映射到某个类上,比如这里配置会映射到 MultipartProperties
# 把光标放在该属性,ctrl+鼠标左键 就可以定位该配置映射到的类
spring.servlet.multipart.max-file-size=10MB
● 还可以在 properties 文件中自定义配置,通过@Value(“${}”)获取对应属性值
#application.properties 文件 my.website=https://www.baidu.com
//某个 Bean
@Value("${my.website}") private String bdUrl;
1、打开 ConfigFileApplicationListener.java , 看一下源码
2、测试, 如果我们把 application.properties 放在 resources\config 目录下, 你会发现依然 是管用的
1.自动配置遵守按需加载原则:也就是说,引入了哪个场景 starter 就会加载该场景关联的 jar 包,没有引入的 starter 则不会加载其关联 jar
2.SpringBoot 所 有 的 自 动 配 置 功 能 都 在 spring-boot-autoconfigure 包 里 面
3.在 SpringBoot 的 自 动 配 置 包 , 一 般 是 XxxAutoConfiguration.java, 对 应 XxxxProperties.java, 如图