需要pom.xml jar坐标
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
</dependencies>
2.lombok 插件 导入坐标后还需要 在idea中 安装插件 注解@Data 自动生成 一个实体类的get set toString....方法
第一种方式注入
3.jdbc.properties配置文件 application.properties 必须为默认名字
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=123
4.编写 只用来 导入jdbc配置文件的 类
@ConfigurationProperties(prefix = "jdbc")
@Data
public class JdbcProperties {
private String driver;
private String url;
private String username;
private String password;
}
5. 编写 获得datasource配置类 Datasource 就交给了Spring容器管理了 可以在其他地方自动注入
@EnableConfigurationProperties(JdbcProperties.class) 后可以在本类任意地方直接使用JdbcProperties对象
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
@Bean
public DataSource createDatasource(JdbcProperties prop) {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(prop.getDriver());
druidDataSource.setUrl(prop.getUrl());
druidDataSource.setUsername(prop.getUsername());
druidDataSource.setPassword(prop.getPassword());
return druidDataSource;
}
}
当想要一个方法的返回值给 Spring 容器管理时,使用bena注解
第二种方式
1.只需要application.properties 配置
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=123
2.然后 使用@ConfigurationProperties(prefix = "jdbc") 指定配置文件的前缀 就会自动需找加载 classpath下的默认配置文件
并将配置文件中的属性 赋值给 Datasource 类的 同名的set方法 注意与set方法同名 列如setDriverClassName
@Configuration
public class JdbcConfig {
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource createDatasource() {
return new DruidDataSource();
}
}
Yaml配置文件
简写 xxx.yml 书写格式 可以写列表形式的配置文件 与properties 重名时 取并集 冲突时 取properties的
jdbc:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: 123
user:
language: language是一个列表形式
- java
- python
- ios
@ConfigurationProperties(prefix = "jdbc")
@Data
public class JdbcProperties {
private String driver;
private String url;
private String username;
private String password;
class USer{
List<String> language;
}
}
自动配置原理
@SpringBootApplication
public class BootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(BootDemoApplication.class,args);
}
}
添加了 SpringBootApplication 注解的类 会自动扫描 本类所在的包 所以不需要 像以前xml中配置扫描注解所在包
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {}
Springboot 为我们提供了默认的配置 可以写相同的bean 类名实现自定义 也可以使用yaml 或properties文件 覆盖 属性
列如启动端口 访问路径必须加hello.do访问 控制日志级别
server:
port: 80
servlet:
path: "*.do"
logging:
levle:
org.springframework: debug
com.wyc: debug
springboot 默认静态资源 存放在 resou rce下的static 目录下 需要自己创建
也就是编译后的 classpath 下 java代码也放在 classpath下