SpringBoot中的配置类(@Configuration)

目录
  • SpringBoot基于java类的配置
    • 第一步
    • 第二步
    • 第三步
    • 第四步测试
  • SpringBoot自定义配置类
    • 1.方式一
    • 2.方式二

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);
    }
}

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

(0)

相关推荐

  • SpringBoot @ConfigurationProperties注解的简单使用

    源码 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ConfigurationProperties { @AliasFor("prefix") String value() default ""; @AliasFor("value") String prefix()

  • SpringBoot中@ConfigurationProperties 配置绑定

    SpringBoot底层的一个功能 : @ConfigurationProperties @ConfigurationProperties 配置绑定 来举一个场景例子 : 我们习惯于把经常变化的一个东西配到配置文件里面.比如把数据库的一些链接地址.账号.密码包括数据库连接池的大小等等这些属性配到properties配置文件里面,然后为了方便 , 因为我们未来可能要创建数据库连接池,我们会把这个配置文件里面的内容又一一解析到我们数据库连接池(比如javaBean我们这个对象里面),所以我们这个实现

  • SpringBoot2底层注解@Configuration配置类详解

    目录 SpringBoot2底层注解@Configuration配置类 一.配置类 二.配置类本身也是组件 三.proxyBeanMethods 属性 有组件依赖的场景 SpringBoot2底层注解@Configuration配置类 一.配置类 @Configuration这个注解作用就是告诉 springboot 这是一个配置类. 这个配置已经不陌生了,在之前 spring 相关的使用全注解方式时,就使用到了配置类. 在配置类里,可以使用@Bean标记在方法上,给容器注册组件,默认也是单实例

  • SpringBoot中的配置类(@Configuration)

    目录 SpringBoot基于java类的配置 第一步 第二步 第三步 第四步测试 SpringBoot自定义配置类 1.方式一 2.方式二 SpringBoot基于java类的配置 java配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有: @Configuration:声明一个类作为配置类,代替xml文件 @Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签 @Value:属性注入 @PropertySource:指定外部属性文件(propertie

  • springboot 跨域配置类及跨域请求配置

    下面通过代码看下springboot 跨域配置类,代码如下所示: ackage org.fh.config; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRe

  • Springboot项目实现将类从@ComponentScan中排除

    目录 将类从@ComponentScan中排除 问题描述 方案一 方案二 方案三 方案四 @ComponentScan 详解 将类从@ComponentScan中排除 问题描述 最近在学习SpringCloud的Ribbon,在使用 @RibbonClient(name = "SPRINGCLOUD-P-DEPT", configuration = RibbonConfig.class) 为服务指定负载均衡策略的时候,根据Ribbon官方文档介绍,自定义的Ribbon配置类不允许被Sp

  • springboot中如何通过cors协议解决跨域问题

    1.对于前后端分离的项目来说,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出现. 针对跨域问题,我们可能第一个想到的解决方案就是jsonp,并且以前处理跨域问题我基本也是这么处理. 但是jsonp方式也同样有不足,不管是对于前端还是后端来说,写法与我们平常的ajax写法不同,同样后端也需要作出相应的更改.并且,jsonp方式只能通过get请求方式来传递参数,当然也还有其它的不足之处,针对于此,我并没有急着使用jsonp的方式来解决跨域问题,去网上找寻其它方式,也就是本文主

  • 在SpringBoot中使用Logback管理记录日志

    SpringBoot的默认日志配置 SpringBoot 开箱即用,默认帮你配置了日志框架,使用 Commons Logging ,但是默认配置也提供了对常用日志的支持,如: Java Util Logging , Log4J , Log4J2 和 Logback.每种Logger都可以通过配置使用控制台或者文件输出日志内容. 控制台输出 关于log日志,首先说说的5个日志级别 LEVEL: 从高到低分别是 ERROR . WARN . INFO . DEBUG . TRACE 低级别的会输出高

  • SpringBoot中整合Shiro实现权限管理的示例代码

    之前在 SSM 项目中使用过 shiro,发现 shiro 的权限管理做的真不错,但是在 SSM 项目中的配置太繁杂了,于是这次在 SpringBoot 中使用了 shiro,下面一起看看吧 一.简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 三个核心组件: 1.Subject 即"当前操作用户".但是,在 Shi

  • 详解SpringBoot中使用RabbitMQ的RPC功能

    一.RabbitMQ的RPC简介 实际业务中,有的时候我们还需要等待消费者返回结果给我们,或者是说我们需要消费者上的一个功能.一个方法或是一个接口返回给我们相应的值,而往往大型的系统软件,生产者跟消费者之间都是相互独立的两个系统,部署在两个不同的电脑上,不能通过直接对象.方法的形式获取想要的结果,这时候我们就需要用到RPC(Remote Procedure Call)远程过程调用方式. RabbitMQ实现RPC的方式很简单,生产者发送一条带有标签(消息ID(correlation_id)+回调

  • SpringBoot中@Import注解的使用方式

    目录 一. @Import引入普通类 二. @Import引入配置类(@Configuration修饰的类) 三 .@Import引入ImportSelector的实现类 3.1 静态import场景(注入已知的类) 3.2 动态import场景(注入指定条件的类) 四. @Import引入ImportBeanDefinitionRegistrar的实现类 前言: @Import注解用来帮助我们把一些需要定义为Bean的类导入到IOC容器里面.下面我们就对@Import注解的使用做一个简单的总结

随机推荐