第一次总结
实现功能:
暂无
修复bug:
1.springboot启动异常:This application has no explicit mapping for /error
原因:
spring-boot会自动加载启动类所在包下及其子包下的所有组件.
所以springboot启动类所在包的路径要在最外层,或者根层下
所学内容
1.了解SpringBoot是是什么
Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。
SpringBoot的主要优点:
- 为所有Spring开发者更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
2.SpringBoot 原理初探
启动器:说白了就是Springboot的启动器
springboot会将所有的功能场景,都编程一个个的启动器
我们要使用什么功能,都只需要找到对应的启动器就可以了 starter
主程序:
@SpringBootApplication:标注这是一个springboot的应用
@SpringBootConfiguration:spingboot的配置
@EnableAutoConfiguration:自动配置
@AutoConfigurationPackage:自动配置包
@Import({Registrar.class}):导入选择器
@Import({AutoConfigurationImportSelector.class}):导入配置,导入选择
3.SpringBoot配置
- @SpringBootApplication 开启了Spring的组件扫描和Springboot的自动配一起
- @Configuration:表名该类使用基于Java的配置,将此类作为配置类。
- @ComponentScan:启用注解扫描
- @EnableAutoConfiguration:开启springboot的自动配置功能
pom.xml文件中默认有两个模块:
spring-boot-starter:核心模块,包括自动配置支持、日志和YAML
spring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockito
yaml语法:
以数据作为中心,而不是以标记语言为重点!
语法结构 :key:空格 value
# k=v
# 对空格的要求比较高
# 普通的key-value
name:qinjiang
# 对象
Student:
name: qinjiang
age: 3
# 行内写法
student:{name:qingjiang,age:3}
# 数组
pets:
- cat
- dog
- pig
# 行内写法
pets: [cat,dog,pig]
注入配置文件:
1.@value
@Component//注册bean
public class Dog {
@Value("小黑")
private String name;
@Value("4")
private int age;
}
yaml配置:
application.yaml内:
dog:
name: 旺财
age: 3
@Component//注册组件
@ConfigurationProperties(prefix = "dog")
public class Dog {
private String name;
private int age;
}
加载指定的配置文件
name=大何
age=8
@Component
@PropertySource(value = "classpath:application.properties")
public class Dog {
//SPEL表达式取出配置文件的值
@Value("${name}")
@Email
private String name;
@Value("${age}")
private int age;
}
profile
我们在开发SpringBoot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile就是进行动态配置切换的。
profile配置方式
- 多profile文件方式
spring.profiles.active=dev
- yml多文档方式
---
server:
port: 8081
spring:
profiles: dev
---
server:
port: 8082
spring:
profiles: pro
---
server:
port: 8083
spring:
profiles: test
---
spring:
profiles:
active: test
4.整合JDBC
1.导入启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.编写yaml配置文件连接数据库
编写yaml配置文件连接数据库;
spring:
datasource:
username: root
password: 1234567890lina
#serverTimezone=UTC解决时区的报错
url: jdbc:mysql://127.0.0.1:3306/day17?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
3.数据库操作
@Autowired
JdbcTemplate jdbcTemplate;
//查询数据库的所有信息
//没有实体类,怎么获取?Map
@GetMapping("bookList")
public List<Map<String, Object>> findAllBooks() throws SQLException {
String sql="select * from book";
List<Map<String, Object>> books = jdbcTemplate.queryForList(sql);
return books;
}
@GetMapping("updateBook")
public void updateBook() throws SQLException {
String sql="update book set name=? where id=?";
Object[] objects=new Object[2];
objects[0]="酸梅";
objects[1]=1;
jdbcTemplate.update(sql,objects);
}