Spring boot 注入jdbc配置文件 Yaml配置文件

 需要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下

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值