Java 微服务day01 源代码 SpringBoot的SpringMVC快速入门(一) | |
Java 微服务 day01 源代码 Java的配置(二) | |
Java 微服务 day02 源代码 SpringBoot 属性注入 自动配置 (一) | |
Java 微服务 day02 源代码 SpringBoot 实战开发 (二)创建相关数据库,搭建服务,搭建普通工程,设置访问后缀以及端口号 | |
Java 微服务 day02 源代码 SpringBoot 实战开发 (三)SpringMVC高级配置:拦截器:HandlerExecutionChain | |
Java 微服务 day02 源代码 SpringBoot 实战开发 (四)整合JDBC和事务(数据库连接池) | |
Java 微服务 day02 源代码 SpringBoot 实战开发 (五)整合Mybatis(数据库连接池),通用Mapper整合,业务层整合 |
一、SpringBoot 属性注入方式一
1、修改jdbc.properties文件的名称
2、创建JdbcProperties类
package com.itzheng.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties
public class JdbcProperties {
String url;
String driverClassName;
String username;
String password;
}
3、完善pom.xml添加
先安装Lombok
引入Lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
4、完善JdbcProperties
添加@Data后会自动生成set和get方法
package com.itzheng.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "jdbc")
@Data
public class JdbcProperties {
String url;
String driverClassName;
String username;
String password;
}
5、修改JdbcConfig类使用JdbcProperties(启用配置属性)
package com.itzheng.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
@Configuration //声明一个类作为配置类,代替xml文件
//@PropertySource("classpath:application.properties")
@EnableConfigurationProperties(JdbcProperties.class) //使用配置属性
public class JdbcConfig {
// @Value("${jdbc.url}")
// String url;
// @Value("${jdbc.driverClassName}")
// String driverClassName;
// @Value("${jdbc.username}")
// String username;
// @Value("${jdbc.password}")
// String password;
@Bean //声明在方法上,将方法返回值加入Bean容器,代替<bean>标签
public DataSource dataSource(JdbcProperties prop){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(prop.getDriverClassName());
dataSource.setUrl(prop.getUrl());
dataSource.setUsername(prop.getUsername());
dataSource.setPassword(prop.getPassword());
return dataSource;
}
}
6、运行代码
添加断点
7、可以在任意位置使用
二、SpringBoot 属性注入方式二
1、修改JdbcProperties
2、修改JdbcConfig
@Bean //声明在方法上,将方法返回值加入Bean容器,代替<bean>标签
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource(){
return new DruidDataSource();
}
全部代码
package com.itzheng.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration //声明一个类作为配置类,代替xml文件
//@PropertySource("classpath:application.properties")
//@EnableConfigurationProperties(JdbcProperties.class) //使用配置属性
public class JdbcConfig {
// @Value("${jdbc.url}")
// String url;
// @Value("${jdbc.driverClassName}")
// String driverClassName;
// @Value("${jdbc.username}")
// String username;
// @Value("${jdbc.password}")
// String password;
// @Autowired
// JdbcProperties jdbcProperties;
//
// public JdbcConfig(JdbcProperties jdbcProperties){
// this.jdbcProperties = jdbcProperties;
// }
/*
@Bean //声明在方法上,将方法返回值加入Bean容器,代替<bean>标签
public DataSource dataSource(JdbcProperties prop){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(prop.getDriverClassName());
dataSource.setUrl(prop.getUrl());
dataSource.setUsername(prop.getUsername());
dataSource.setPassword(prop.getPassword());
return dataSource;
}
*/
@Bean //声明在方法上,将方法返回值加入Bean容器,代替<bean>标签
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource(){
return new DruidDataSource();
}
}
3、重新运行
三、SpringBoot 属性注入方式三yaml注入
1、创建application.yaml
使用更优雅的方式下配置文件
jdbc:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/itzheng
username: root
password: 123
user:
name: jack
age : 21
language:
- java
- python
- andorid
- sql
2、完善JdbcProperties
package com.itzheng.config;
import com.sun.org.apache.xpath.internal.operations.String;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.List;
//@ConfigurationProperties(prefix = "jdbc")
@Data
public class JdbcProperties {
String url;
String driverClassName;
String username;
String password;
User user = new User();
class User{
String name;
Integer age;
List<String> language;
}
}
四、自动配置
1、@SpringBootApplication
这个注解的作用与@Configuration作用相同
都是用来声明当前类是一个配置类
可以通过@Bean注解生成IOC容器管理的bean
在QuickStartApplication中定义bean
并在@HelloController中注入使用
下面是@HelloController
留下一个即可
2、覆盖WebMvcProperties配置服务器相关内容
在application.yaml当中
3、总结
SpringBoot为我们提供了默认配置,而默认配置生效的条件一般有两个;
你引入了相关依赖
你自己没有配置Bean
1)启动器
所以,我们如果不想配置,
只需要引入依赖即可,而依赖版本我们也不用操心,
因为只要引入了SpringBoot提供的stater(启动器),就会自动管理依赖及版本了。
因此,玩SpringBoot的第一件事情,就是找启动器,SpringBoot提供了大量的默认启动器
2)全局配置
另外,SpringBoot的默认配置,都会读取默认属性,而这些属性可以通过自定义
application.properties
文件来进行覆盖。这样虽然使用的还是默认配置,
但是配置中的值改成了我们自定义的。
因此,玩SpringBoot的第二件事情,
就是通过 application.properties来覆盖默认属性值,
形成自定义配置。
我们需要知道SpringBoot的默认属性key,非常多。