• 正确理解springboot的常用注入方式


    springboot的属性注入


    以注入dataSource为例
    1.springboot默认读取的文件是放在resources目录下的名为application.properties或application.yml的文件
    在application.properties中写入以下属性
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://127.0.0.1:3306/数据库名称
    jdbc.username=rootxxx
    jdbc.password=xxx

    或者application.yml中写入如下格式的属性
    jdbc:
     driverClassName: com.mysql.jdbc.Driver
     url: jdbc:mysql://127.0.0.1:3306/数据库名称
     username: rootxxx
     password: xxx
    2.引入依赖
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.6</version>
    </dependency>
    3.创建一个类,用于提供属性注入
    @ConfigurationProperties(prefix = "jdbc")
    public class JdbcProperties {
    private String url;
    private String driverClassName;
    private String username;
    private String password;
    // ... 略
    // getters 和 setters
    }


    - 在类上通过@ConfigurationProperties注解声明当前类为属性读取类
    - prefix="jdbc"读取属性文件中,前缀为jdbc的值。
    - 在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致

    4.创建一个JdbcConfig类使用这些属性
    @Configuration
    @EnableConfigurationProperties(JdbcProperties.class)
    public class JdbcConfig {

    //例子
    @Bean
    public DataSource dataSource(JdbcProperties jdbc) {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setUrl(jdbc.getUrl());
    dataSource.setDriverClassName(jdbc.getDriverClassName());
    dataSource.setUsername(jdbc.getUsername());
    dataSource.setPassword(jdbc.getPassword());
    return dataSource;
    }
    }

    通过@EnableConfigurationProperties(JdbcProperties.class)来声明要使用JdbcProperties这个类的对象


    当然,JdbcProperties的注入有三种方法
    4.1@Autowired注入
    @Autowired
    private JdbcProperties prop;


    4.2构造函数注入
    private JdbcProperties prop;
    public JdbcConfig(Jdbcproperties prop){
    this.prop = prop;
    }


    4.3声明有@Bean的方法参数注入
    上面的例子就是使用该方法注入(//例子)

    4.4这种方式的注入看起来很复杂,但是复用性很高,如果我们只需要在单个地方使用dataSource,可以使用下面的方法注入
    @Configuration
    public class JdbcConfig {

    @Bean
    // 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource() {
    DruidDataSource dataSource = new DruidDataSource();
    return dataSource;
    }
    }

    我们直接把@ConfigurationProperties(prefix = "jdbc")声明在需要使用的@Bean的方法上,然后SpringBoot就会自动调用这个Bean(此处是DataSource)的set方法,
    然后完成注入。使用的前提是:该类必须有对应属性的set方法!
    ---------------------
    作者:turboCai
    来源:CSDN
    原文:https://blog.csdn.net/c905080860/article/details/81030744
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Keil MDK中单个c文件生成LIB文件
    STM32标准外设库、 HAL库、LL库
    STM32CubeMX介绍、下载与安装
    static关键字的总结
    Qt中 QString 转 char*
    字符串(string)与整型(int)、浮点型(float)等之间的转换
    RF相关知识
    Qt4问题集锦
    Qt4程序在windows平台下打包发布
    (81)Client、Server通信模式和P2P通信模式的区别
  • 原文地址:https://www.cnblogs.com/sjqq/p/10176343.html
Copyright © 2020-2023  润新知