**
SpringBoot的基本配置:
**
主程序入口:XxxApplication,使用@SpringBootApplication注解修饰
类加载路径Resource:
**配置文件:**以application命名,结尾可以是yml、yaml或properties,配置文件的配置作用就是替换SpringBoot自动装配的默认配置,在配置文件中配置的属性,可以通过配置类使用@ConfigurationProperties(perfix=“jdbc”)将配置文件中前缀为jdbc的属性映射到配置类(使用@Configuration或@Conponent等修饰)中
springboot可以在以下地方读配置文件:优先级由上到下:
1、file:./config/
2、file:./
3、classpath:/config/
4、classpath:/
**yml配置的优势:**支持松散绑定(由烤串写法映射成驼峰),JSR303校验、对象写法(map、list等)
springboot的多环境配置方式:
一、配置文件为properties文件:编写多份配置文件,文件名为application-xxx.properties,xxx就是环境的名字,通过在配置文件中写spring,profiles.active="xxx"选择激活哪个环境的,xxx就是application-后的文件名
二、配置文件为yml文件:多个环境可以编写在一个文件当中,多环境使用----隔开,spring:profile指定环境名,如:
server:
post:8082
spring:
frofilers:
:active=“dev” #指定激活的环境
SpringBoot处理静态资源的方式:
一、通过webjars以maven依赖方式引入,通过localhost:8080/webjars访问,比较麻烦,主要使用方式二
二、静态资源放classpath类加载路径下的:/META-INF/resources/或/resources/ 或/static/或/public/下,就可以通过任意路径直接访问到,如localhost:8080/1.js就能访问到这四个路径下的1.js文件,优先级由前到后。
如果自定义了自己的静态资源路径(static-path-pattern),则会根据自定义的路径寻找静态资源,以上方式失效。
使用Java类和注解配置方式代替传统XML配置:
springBoot当中java配置主要靠java类和一些注解代替xml
@Configuration:声明一个类作为配置类,代替xml文件
@Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签,默认的id为方法名
@value:属性注入,单个属性注入,修饰成员变量
@PropertySource:指定外部属性文件,注入
SpringBoot的属性注入方式:
**一、**单独将属性注入一个类当中,可以供其他配置类使用,步骤如下
1、在application.properties配置属性,如:
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezione=UTC&useUnicode=true&characterEncoding=utf-8
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=1234
2、创建一个类 名为JDBCPropertis,在类上添加注解
@ConfigurationProperties(prefix="jdbc"),内容如下
@Data
@ConfigurationProperties(prefix="jdbc")//将application.properties中以jdbc开头的属性注入到该类中
public class JDBCProperties {
String url;
String username;
String password;
String driverClassName;
}
3、此时,就可以在@Configuration修饰类中通过@EnableConfigurationProperties注解启用该属性类了,如:
@Configuration
@EnableConfigurationProperties(JDBCProperties.class)//启用JDBCProperties.class的属性生效
public class JdbcConfig {
@Autowired
JDBCProperties jdbc;
public JdbcConfig(JDBCProperties jdbcProperties){
this.jdbc = jdbc;
}
@Bean
public DataSource dataSource(JDBCProperties jdbcProperties){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(jdbc.url);
dataSource.setDriverClassName(jdbc.driverClassName);
dataSource.setPassword(jdbc.password);
dataSource.setUsername(jdbc.username);
return dataSource;
}
}
方式二:直接从属性文件中注入属性:
1、在application.properties配置属性,如:
jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezione=UTC&useUnicode=true&characterEncoding=utf-8
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=1234
2、直接在方法上使用注解@ConfigurationProperties(prefix=“jdbc”)指定前缀将属性注入到方法中bean的同名属性中:
@Configuration
public class JdbcConfig {
@Bean
@ConfigurationProperties(prefix="jdbc")
public DataSource dataSource(JDBCProperties jdbcProperties){
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
三、使用yaml编写属性文件,方式和前两个方式一致,只是编写属性文件格式不同,如:
jdbc:
url=jdbc:mysql://localhost:3306/mybatis? serverTimezione=
UTC&useUnicode=true&characterEncoding=utf-8
driverClassName=com.mysql.cj.jdbc.Driver
username=root
jpassword=1234
首页定制:默认会到静态资源路径(static、public等)找index.html当首页,静态资源路径可以直接通过资源路径访问,类似web-app下,而templates下的页面必须通过控制器跳转,客户端不能直接访问,类似于WEB-INF目录,当导入thymeleaf的依赖后,会默认注册ThymeleafViewResolver视图解析器,该视图解析器会将返回的逻辑视图名加前缀classpath:/templates,后缀加.html,得到实际逻辑视图,也可以通过配置改变该前后缀配置。
扩展Spring mvc的配置,支持如下扩展配置:
1、视图解析器:ContentNegotiatingViewResolver代理,BeanNameViewResolver的扩展,配置自定义视图解析器
2、自定义Converter、GenericConverter转换器和Formatter格式化器
3、自定义HttpMessageConverter消息转换器
4、自定义指定首页
5、自定义页面图片favicon
6、web的一些初始化指定(ConfigurableWebBindingInitilizer)
配置以上的扩展,需要创建一个类,使用@Configuration修饰,并实现WebMvcConfigurer接口,且该类不能使用@EnableWebMvc修饰(该注解导入了DelegatingWebMvcConfiguration类,该类会从容器中获取所有的webMvcConfig,但自动配置类WebMvcAutoCOnfiguration必须在某些类不存在的时候才生效,该注解获取的类中包含了这些类,将会导致WebMvcConfiguration失效),扩展Mvc配置会在下一章节分享。
SpringBoot提供了大量的自动配置类,这些配置类以及依赖的核心包都封装到各种启动器starter当中,启动器如下:
依赖文件pom.xml:
org.springframework.boot spring-boot-starter-parent 2.4.5 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-devtools org.projectlombok lombok true