SpringBoot中的配置类(@Configuration)

 更新时间:2022年06月10日 15:14:35   作者:胡安民  
这篇文章主要介绍了SpringBoot中的配置类(@Configuration),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot基于java类的配置

java配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有:

  • @Configuration:声明一个类作为配置类,代替xml文件
  • @Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签
  • @Value:属性注入
  • @PropertySource:指定外部属性文件(properties)。
  • @ConfigurationProperties(prefix = “xx”) (指定配置属性的前缀)

提示: @Configuration也附带了@Component的功能。所以理论上内部也可以使用@Autowared功能的

我们接下来用Java类配置来尝试实现连接池配置

第一步

在pom.xml导入

<!--druid 数据连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>

第二步

添加druid.properties文件到resources包里

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/order?characterEncoding=utf-8
name=root
pass=root
initialSize=1
minIdle=1
maxActive=20
maxWait=3

第三步

创建配置文件 JdbcConfig

package cn.boke.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
@Configuration  //声明配置类
@PropertySource("classpath:druid.properties")   //导入配置文件
public class JdbcConfig {
    //将配置文件内的 信息 放入变量中
    @Value("${driverClassName}")
    private  String driverClassName;  //JDBC驱动
    @Value("${url}")
    private String url;  //连接地址
    @Value("${name}")
    private  String name;  //数据库用户
    @Value("${pass}")
    private String pass;  //数据库密码
    @Value("${initialSize}")
    private int initialSize;   //初始化连接数量
    @Value("${minIdle}")
    private int minIdle;  //最小连接数量
    @Value("${maxActive}")
    private int maxActive;  //最大连接数量
    @Value("${maxWait}")
    private int maxWait;  //最大等待时间
    @Bean("dataSource")  //将配置信息 存入Spring 容器中 名称为 dataSource
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUsername( name);
        dataSource.setPassword(pass);
        dataSource.setInitialSize(initialSize);
        dataSource.setMaxActive(maxActive);
        dataSource.setMaxWait(maxWait);
        return dataSource;
    }
}

第四步测试

连接池内的数据是否 添加成功

打个断点

运行TestAplliaction 这个类的启动引导

然后在游览器中输入 http://localhost:8080/hello

回到IDEA控制台中点击

能在显示的内容中找到 对应的信息 就ok了

A控制台中点击

能在显示的内容中找到 对应的信息 就ok了

SpringBoot自定义配置类

1.方式一

配置类标注:

  • @ConfigurationProperties注解,可以设置前缀名
  • @Component 将该类放入spring容器中

必须设定get/set方法

配置类:

@Component //将该Bean放入spring容器中
@ConfigurationProperties(prefix = "com.example")//指定该类为配置获取类,并指定前缀
public class MyConfig {
    private String name;
    private Integer age;
    //必须设置get set方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

application.properties中配置

com.example.age=20
com.example.name=xxx

使用:

在其他Bean中可以直接注入该Bean

@RestController
public class DemoController {
    @Autowired
    private MyConfig config;
    @GetMapping("/demo2")
    public String m2(){
        return config.getName();
    }
}

2.方式二

配置类:

不使用 @Component 将该类放入spring容器中,而是使用@EnableConfigurationProperties(MyConfig.class)在根配置类中引入 

@ConfigurationProperties(prefix = "com.example")//指定该类为配置获取类,并指定前缀
public class MyConfig {
    private String name;
    private Integer age;
    //必须设置get set方法
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}
@SpringBootApplication
@EnableConfigurationProperties(MyConfig.class) //引入自定义配置类
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class,args);
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 超级详细的Java安装教程(Mac版)

    超级详细的Java安装教程(Mac版)

    Java是一种广泛使用的编程语言,可用于开发各种类型的应用程序,这篇文章主要给大家介绍了关于Mac系统下Java安装的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • 详解jvm双亲委派机制

    详解jvm双亲委派机制

    双亲委派机制保证了核心类的安全,确保不会被修改,也保证了不会加载到重复的字节码文件,这篇文章主要介绍了jvm双亲委派机制详解,需要的朋友可以参考下
    2022-11-11
  • Springboot 对接支付宝实现扫码支付功能

    Springboot 对接支付宝实现扫码支付功能

    本文介绍了如何在Spring Boot项目中实现支付宝支付功能,包括沙箱环境配置、依赖引入、配置参数、订单类定义、测试接口编写等步骤,通过不同场景下的请求方式(PC端、二维码、回调处理、定时查询支付结果),展示了如何与支付宝API进行交互,感兴趣的朋友一起看看吧
    2025-03-03
  • Java线程协作的两种方式小结

    Java线程协作的两种方式小结

    Java中线程协作的最常见的两种方式是利用Object.wait()、Object.notify()和使用Condition,本文主要介绍了Java线程协作的两种方式小结,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • java自动装箱拆箱深入剖析

    java自动装箱拆箱深入剖析

    基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱)
    2012-11-11
  • 解决mybatis plus字段为null或空字符串无法保存到数据库的问题

    解决mybatis plus字段为null或空字符串无法保存到数据库的问题

    这篇文章主要介绍了解决mybatis plus字段为null或空字符串无法保存到数据库的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • java实现用户签到BitMap功能实现demo

    java实现用户签到BitMap功能实现demo

    这篇文章主要为大家介绍了java实现用户签到BitMap功能实现demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 如何从Java环境中调用GoLang函数

    如何从Java环境中调用GoLang函数

    Go,常被称为GoLang,Go语言凭借其丰富的标准库,以及 goroutines和 channels等独特特性,在开发可扩展且高效的程序方面展现了显著优势,许多开发者倾向于将Go与其他编程语言结合使用,在本文中,我们将深入探讨如何从Java环境中调用GoLang函数,以实现两种语言的无缝集成
    2025-01-01
  • SpringBoot中自动配置原理解析

    SpringBoot中自动配置原理解析

    SpringBoost是基于Spring框架开发出来的功能更强大的Java程序开发框架,本文将以广角视觉来剖析SpringBoot自动配置的原理,涉及部分Spring、SpringBoot源码,需要的可以参考下
    2023-11-11
  • springboot跨域问题解决方案

    springboot跨域问题解决方案

    这篇文章主要介绍了springboot跨域问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论