zoukankan      html  css  js  c++  java
  • 正确理解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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    [NOI2016]循环之美(杜教筛)
    [CF600E]Dsu on tree
    [POI2015]Myjnie
    [POI2015]Odwiedziny
    [POI2015]Logistyka
    [POI2015]Wilcze doły
    [POI2017]Sabotaż
    [BZOJ3928/4048]Outer space invaders
    [BZOJ5109]大吉大利,晚上吃鸡!
    [AGC016E]Poor Turkeys
  • 原文地址:https://www.cnblogs.com/sjqq/p/10176343.html
Copyright © 2011-2022 走看看