SpringBoot笔记——详解Spring中的相关配置

SpringBoot 以其轻量级、内嵌 Web 容器、一键启动、方便调试等特点被越来越多的微服务实践者所采用。

今天这篇博客也是作为springboot的学习笔记,主要说说相关的配置

相关的springboot学习视频

https://www.bilibili.com/video/BV1XQ4y1m7ex

Spring中的相关配置

1 .Spring中的web项目

首先需要一个主启动类,作为整个springboot web项目的入口

package com.fan;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//这是springboot的一个启动器,启动之后就能生产出来一个spring整合的web应用
//注意后面引用的相关组件不能脱离这个启动器所在的包,比如说Controller类
//启动的时候会看见内置的tomcat进行启动,还会通过DispatcherServlet进行映射spring-mvc的Controller
//把xml的配置放到的spring中全注解的配置中
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

2.创建一个德鲁伊的连接池,并且为它进行属性绑定

首先创建一个属性读取类:需要注意的是,属性我们的SpringBoot会默认读取一个Resources下的一个名为:application.propertiees的配置文件,指定这个类的要读取属性文件中要读取属性的前缀则需要在类上添加注解:@ConfigurationProperties(prefix = “jdbc”)就可以读取到:

例如:

jdbc.uername= .....

jdbc.password=.....等相关属性

package com.fan.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
//表示当前类是属性读取类,读取属性文件中的前缀是jdbc,来读取指定的属性
//我们的springboot会默认读取一个名为:application。properties这个属性文件中的属性
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
    private String driverClassName;
    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;
    }
}

配置文件:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/springboot
jdbc.username=root
jdbc.password=123456

3.需要写一个配置文件,进行注入DataSource连接池中的相关Value

注意:@Configuration声明这个类是一个配置类

@EnableConfiguration(jdbcproperties.class)相当于在spring容器中创建属性读取类,也就是将属性读取类的创建方式交给spring容器进行管理,在我们下面注入dataSource的时候可以直接使用@Autowired进行获取到实例对象

package com.fan.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Autowired;
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
/**
 * 对这个类进行解读:
 * 1.@Configuration:声明我们jdbcConfig是一个配置类
 * 2.@PropertySource:指定属性文件的路径是ClassPath:jdbc.properties
 * 3.@Value:为属性注入值
 * 4.@Bean:将DataSource()方法声明为一个注册Bean的方法,Spring会自动调用该方法,将返回值加入Spring容器中。默认的对象就可以在热议位置通过@Autowired进行注入DataSource了
 *
 */
@EnableConfigurationProperties(JdbcProperties.class)//相当于在spring容器中创建属性读取类
public class JdbcConfig {

    @Bean
    public DataSource dataSource(@Autowired JdbcProperties jdbc){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(jdbc.getDriverClassName());
        dataSource.setUrl(jdbc.getUrl());
        dataSource.setUsername(jdbc.getUsername());
        dataSource.setPassword(jdbc.getPassword());

        return dataSource;
    }
}

4.更优雅的注入方式

//      通过@COnfigurationproperties这个注解,可以将配置文件中前缀是jdbc的属性自动赋值给dataSource中同名的属性当中,一种黑科技的感觉
@Configuration
public class JdbcConfig{
    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_54585403/article/details/123504928