入门使用
原理简述 @SpringBootApplication
-
@EnableAutoConfiguration 自动加载配置类
1. spring.factories 配置 配置类 Spring在其中默认编写好了一系列键值对: 接口名=具体配置实现类全类名 的键值对的properties文件,启动器加载时会自动读取 2. @import (AutoConfigurationImportSelector.class)使用 选择性自动配置 1. spring-autoconfigure-metadata.properties Spring在其中默认编写好了配置类的默认属性值 2. AutoConfigurationImportSelector 使用AutoConfigurationMetadataLoader 默认读取上述配置文件中的属性值,存入Entry 根据配置文件值和注解,为配置类注入数据 并生效某些配置;
-
@ComponentScan 组件扫描(从默认包路径)
生成项目
File-new-project-Spring Initializr(需联网)-添加依赖:勾选web的Spring web-填写基本信息-生成项目
项目目录(仅罗列重点目录):
src
main
java
com.aa.bb
启动类(使用该类的main方法启动项目;该类必须在其他所有类的外层包中)
resources
application.properties(或.yml)(mybatis的主配置文件)
test
pom(根据勾选,自动整合了依赖)
整合Mybatis
2.1- 引入数据库相关依赖
手动引入mybatis-spring-boot-starter依赖并指定版本-引入mysql-connector依赖-引入lombok依赖
2.2- 创建实体类、mapper接口和对应的xml文件
mapper接口上使用@Mapper注解 或 启动类上使用@MapperScan(basePackages = {"包名"})注解
*正常情况下使用org.apahce.ibatis下的@MapperScan注解
*使用mapper启动器,继承 tk包的Mapper<T>接口 反射创建 单表增删改查方法 时,需使用tk包的注解@MapperScan!
XML中指定namespace,对应mapper接口类全类名
2.3- 创建myBatis主配置文件(SqlMapConfig.xml)
2.4- 配置application.yml
指定jdbc连接信息、spring.datasoruce连接信息、mybatis.config-location主配置文件的位置和mybatis.mapper-location映射xml的位置
配置类
概念
SpringBoot中,是尽量减少配置文件的。“习惯>配置”
如需其他配置信息/参数,写到application.yml中,然后使用配置类读取即可(无需繁琐地指定配置文件的位置用于加载)
使用
- 配置文件 application.yml(推荐)或 自定义yml文件
#application.xml
jdbc:
username: root
password: 1127cb56
url: jdbc:mysql:///homework?serverTimezone=GMT
driverClassName: com.mysql.cj.jdbc.Driver
#jdbc.properties
jdbc.username=root
jdbc.password=1127cb56
jdbc.url=jdbc:mysql:///homework?serverTimezone=GMT
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
- 配置类
//application.xml
@Data
@ConfigurationProperties(prefix = "jdbc")
//使用application.xml:自动读取前缀为jdbc的参数,根据名称匹配。无需@value,可装配集合类型。需要在使用该配置类的类添加@EnableConfigurationProperties
public class JDBCYML {
private String url;
private String username;
private String password;
private String driverclassname;
@Bean//自动装配方法
public String jtest(){
return "aaaa";
}
}
//自定义配置文件jdbc.properties
@Data
@Configuration
@PropertySource(value = "classpath:/jdbc.properties")
//自定义yml/properties配置文件:需要使用@PropertySource注解定义文件读取的位置,然后再在属性上使用${}取值(只能操作简单类型)
public class JDBCProp {
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Value("${jdbc.driverClassName}")
private String driverclassname;
}
- 使用
@RestController
@EnableConfigurationProperties(JDBCYML.class)
public class TestController {
@Resource
private JDBCYML jdbcyml;
@Resource
private JDBCProp jdbcProp;
@RequestMapping("/h")
public String test(){
return "hello"+jdbcyml.getUsername()+jdbcProp.getPassword()+jdbcyml.jtest();
}
}