7.24 springboot学习笔记
springboot快速入门
- 配置依赖:父工程,启动器
具体代码:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId><!--启动器,不需要版本-->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 创建启动引导类和控制类,访问地址是:localhost:8080/hello
- 代码如下:
package com.itheima;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* spring boot工程都有一个启动引导类,这是工程的入口类
* 需要在引导类上添加@springbootapplication
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
package com.itheima.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("hello")
public String hello(){
return "Hello Spring Boot!";
}
}
java代码方式进行配置(注解方式)
- 导入依赖包(druid数据连接池)
- 编写jdbc.properties配置文件,编写配置类(为数据库连接做配置),代码如下:
@Configuration //表明这是个配置类
@PropertySource("classpath:jdbc.properties") //说明配置文件所在位置
public class JdbcConfig {
@Value("${jdbc.driverClassName}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean //让返回值到spring容器中,便于直接注入
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
- 可在cotroller类中直接进行测试,代码如下:
public class HelloController {
@Autowired //直接注入所需要的数据源
private DataSource dataSource;
@GetMapping("hello")
public String hello(){
System.out.println("dataSource=" + dataSource);
return "Hello Spring Boot!";
}
- 使用@ConfigurationProperties进行属性注入
- 该注解可以从Spring Boot的配置文件(默认必须为application.properties或者application.yml)中的配置项读取到一个对象中。
- 有两种使用方法,一种是类上使用,一种是直接在方法上使用
- 实现步骤:
- 创建配置项类JdbcProperties(包括get和set方法,属性名必须和必须要与 前缀之后的配置项名称保持松散绑定),类上添加注解@ConfigurationProperties;
- 代码如下:
- 实现步骤:
**
* ConfigurationProperties 从application配置文件中读取配置项
* prefix 表示 配置项的前缀
* 配置项类中的类变量名必须要与 前缀之后的配置项名称保持 松散绑定(相同)
*/
@ConfigurationProperties(prefix = "jdbc") //若此时报错,则在依赖中添加如下代码:
/* <dependency>
<groupId>org.springframework.boot</groupId>
<!--不传递依赖-->
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>*/
public class JdbcProperties {
private String driverClassName; //属性名必须要跟配置文件中jdbc点后面的相同
private String url;
private String username;
private String password;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
- 3.编写配置文件application.properties,将JdbcProperties对象用注解@EnableConfigurationProperties(JdbcProperties.class)注入到JdbcConfig中。
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
@Bean
public DataSource dataSource(JdbcProperties jdbcProperties){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
dataSource.setUrl(jdbcProperties.getUrl());
dataSource.setUsername(jdbcProperties.getUsername());
dataSource.setPassword(jdbcProperties.getPassword());
return dataSource;
}
- 方法上使用实现步骤(前提:返回类有set方法):
- 直接在配置文件中写如下代码:
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource(){
return new DruidDataSource();
}
ymal文件格式
- 特征:
- 树状层级结构展示配置项
- 配置项直接有关系的话分行需要空两格
- 配置项有值的话,需要在:后面空一格
- eg:(将之前的.properties文件改成.yml文件之后还是需要上一节的@ConfigurationProperties写的方法生成dataSource)
jdbc:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot_test
username: root
password: tl12345.
key:
def: <!--集合类型格式-->
- g
- h
- j
-
多个yml配置文件在springboot中允许。这些配置文件的名称必须为application-***.yml ,并且这些配置文件必须要在application.yml配置文件中激活后才可以使用,例子如下:
-
如果properties和yml配置文件同时存在在springboot项目中,则两类配置文件均有效,同名的配置项会以properties的文件为主。
springboot整合通用mapper
-
通用mapper:可以不用自己写sql语句,它能自己拼接
- -
添加依赖
用springboot搭建一个小项目
- 需求:从数据库中取得数据并在页面上用json格式展示(游览器中导入JSONView扩展程序即可)
步骤如下:
- 数据库中创建测试表
- 建立引导类Application和控制类HelloControl
* 导入依赖于pom.xml文件中,包括父节点和web启动器
* 代码在第一章快速入门那 快速入门代码 - .yml文件中配置好数据源,使用默认的heikari连接池
* 需要先导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
- .yml文件中配置如下:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: XXXX(你的密码)
* 使用默认的数据连接池就不用在HelloControl中注入dataSource了
- 创建实体类,用lombok插件得到set和get方法(只需要申明与表头相同的属性即可,要在实体类上添加@Data注解和@Table(name = “tb_user”) //告诉程序我们要查哪张表
- 添加插件后还要导入依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
- 添加插件后还要导入依赖
- 创建UserService实现业务功能,使用通用mapper
- 先导入依赖
<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency>
- 建立UserMapper接口,继承Mapper
<T>
public interface UserMapper extends Mapper<User> {}
- 在userService中注入userMapper并编写查找方法
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findById(Long id){
//根据主键查数据
return userMapper.selectByPrimaryKey(id);
}
}
- 在HelloControl类中注入userService,利用其中的查询方法查找数据库中的数据并展示在游览器端
@RestController //使得返回结果都是字符的样子
public class HelloController {
// @Autowired 使用默认的hikari数据库不用导入数据连接池
// private DataSource dataSource;
@Autowired
private UserService userService;
@GetMapping("hello")
public String hello(){
//System.out.println("dataSource=" + dataSource);
return "Hello Spring Boot!";
}
@GetMapping("/user/{id}")
public User findById(@PathVariable Long id){
return userService.findById(id);
}
}