当前位置:   article > 正文

java项目一-基本搭建 springboot的四种注入方式_springbootdatasource注入

springbootdatasource注入

1、导入jar
springboot:内置tomcat 提供了自动的配置 搭建spring应用的脚手架

 <!--所有的springboot应用都要以该工程为父工程-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.6.RELEASE</version>
</parent>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
<!--启动器:每一个启动器背后都是一堆的依赖-->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.@RestController相当于 Controller+ResponseBody 一般返回值返回到json文件里面

3.http://127.0.0.1:8080/hello/show hello全局 show函数名

4.@ComponentScan

  • Configures component scanning directives for use with @Configuration classes. Provides support parallel with Spring XML’s element.Either basePackageClasses or basePackages (or its alias value) may be specified to define specific packages to scan. If specific packages are not defined, scanning will occur from the package of the class that declares this annotation*

配置用于@Configuration class的组件扫描指令。提供与Spring XML元素并行的支持。可以指定basePackageClasses或basePackages(或其别名值)来定义要扫描的特定包。如果未定义特定的包,将从声明此注释的类的包中进行扫描
类似于<context:component-scan base-package=“路径”> 扫描该类所在的包以及它的子子孙孙包

5.@SpringBootApplication
//使用组合注解 相当于@EnableAutoConfiguration 和 @ComponentScan @SpringBootConfiguration

6.springboot配置方式 属性注入
(1)创建一个springboot配置文件 相当于xml

package cn.itcast.springboot.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  //声明一个类是java配置类 相当于一个xml配置文件
@PropertySource("classpath:application.properties")  //读取资源文件
public class JdbcConfiguration {
    //2.接收之后注入 用value以及$符号
    //1.读取好之后接收  设置参数
    @Value("${jdbc.driverClassName}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;


    @Bean //把方法的返回值注入到spring容器里
    public DataSource dataSource(){
       DruidDataSource dataSource = new DruidDataSource();
       dataSource.setDriverClassName(this.driverClassName);  //这里的this代表全局变量 不可以在函数括号中写 此处也可以省略this
       dataSource.setUrl(this.url);
       dataSource.setUsername(this.username);
       dataSource.setPassword(this.password);
       return dataSource;
   }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

在HelloController中注入

package cn.itcast.springboot.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.sql.DataSource;

//此处也可以用Controller RestController相当于 Controller+ResponseBody  一般返回值返回到json文件里面
@RestController
@RequestMapping("hello") //全局
@EnableAutoConfiguration   //启动自动配置
public class HelloController {
    @Autowired
    private DataSource dataSource;//此处注入

    //Responsebody 因为有Restcontroller所以省略
    @GetMapping("show")
    public String test(){
        return "hello world";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

加断点 在run类中进行debug运行 查看注入情况
在这里插入图片描述

运行run后 输入127.0.0.1:8080/hello/show 查看数据注入情况

此处可看到数据已经注入进来
在这里插入图片描述
在debug中查看配置所需参数 是否注入
由此可见 注入成功
7.当你所定义的属性 不仅想在该配置类中使用 还想在其他配置类中使用时:
可再创建一个类 专门作属性的使用出入 该类称为属性读取类
JdbcProperties
springboot 提供了 @ConfigurationProperties
有了该类后 配置文件类几个部分可以注释掉
在这里插入图片描述
在这里插入图片描述
第一种注入方式:通过注解@Autowired
JdbcConfiguration 配置类中

```java
package cn.itcast.springboot.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.autoconfigure.EnableAutoConfiguration;
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  //声明一个类是java配置类 相当于一个xml配置文件
//@PropertySource("classpath:application.properties")  //读取资源文件
@EnableConfigurationProperties(JdbcProperties.class)   //让自动注入可行
public class JdbcConfiguration {
//    //2.接收之后注入 用value以及$符号
//    //1.读取好之后接收  设置参数
//    @Value("${jdbc.driverClassName}")
//    private String driverClassName;
//    @Value("${jdbc.url}")
//    private String url;
//    @Value("${jdbc.username}")
//    private String username;
//    @Value("${jdbc.password}")
//    private String password;


    //写了属性读取类之后 可实例化在此处进行使用
    @Autowired
    private JdbcProperties jdbcProperties;




    @Bean //把方法的返回值注入到spring容器里
    public DataSource dataSource(){
       DruidDataSource dataSource = new DruidDataSource();
       dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());  //这里的this代表全局变量 不可以在函数括号中写 此处也可以省略this
       dataSource.setUrl(this.jdbcProperties.getUrl());
       dataSource.setUsername(this.jdbcProperties.getUsername());
       dataSource.setPassword(this.jdbcProperties.getPassword());
       return dataSource;
   }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

JdbcProperties 属性读取类中

package cn.itcast.springboot.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "jdbc")   //configuration 自动读取application 里面的配置文件
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;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

第二种注入方式:通过构造方法

  package cn.itcast.springboot.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.autoconfigure.EnableAutoConfiguration;
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  //声明一个类是java配置类 相当于一个xml配置文件
//@PropertySource("classpath:application.properties")  //读取资源文件
@EnableConfigurationProperties(JdbcProperties.class)   //让自动注入可行
public class JdbcConfiguration {
//    //2.接收之后注入 用value以及$符号
//    //1.读取好之后接收  设置参数
//    @Value("${jdbc.driverClassName}")
//    private String driverClassName;
//    @Value("${jdbc.url}")
//    private String url;
//    @Value("${jdbc.username}")
//    private String username;
//    @Value("${jdbc.password}")
//    private String password;


    //写了属性读取类之后 可实例化在此处进行使用
//    第二种注入方式 不用Autowired
//    @Autowired
    private JdbcProperties jdbcProperties;

    public JdbcConfiguration (JdbcProperties jdbcProperties){
        this.jdbcProperties = jdbcProperties;
    }

    @Bean //把方法的返回值注入到spring容器里
    public DataSource dataSource(){
       DruidDataSource dataSource = new DruidDataSource();
       dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());  //这里的this代表全局变量 不可以在函数括号中写 此处也可以省略this
       dataSource.setUrl(this.jdbcProperties.getUrl());
       dataSource.setUsername(this.jdbcProperties.getUsername());
       dataSource.setPassword(this.jdbcProperties.getPassword());
       return dataSource;
   }

}

  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

第三种方法注入:通过Bean方法的形参注入

package cn.itcast.springboot.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.autoconfigure.EnableAutoConfiguration;
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  //声明一个类是java配置类 相当于一个xml配置文件
//@PropertySource("classpath:application.properties")  //读取资源文件
@EnableConfigurationProperties(JdbcProperties.class)   //让自动注入可行
public class JdbcConfiguration {
//    //2.接收之后注入 用value以及$符号
//    //1.读取好之后接收  设置参数
//    @Value("${jdbc.driverClassName}")
//    private String driverClassName;
//    @Value("${jdbc.url}")
//    private String url;
//    @Value("${jdbc.username}")
//    private String username;
//    @Value("${jdbc.password}")
//    private String password;


    //写了属性读取类之后 可实例化在此处进行使用
//    第二种注入方式 不用Autowired
//    @Autowired
//    private JdbcProperties jdbcProperties;

//    public JdbcConfiguration (JdbcProperties jdbcProperties){
//        this.jdbcProperties = jdbcProperties;
//    }

    @Bean //把方法的返回值注入到spring容器里
    public DataSource dataSource(JdbcProperties jdbcProperties){
       DruidDataSource dataSource = new DruidDataSource();
       dataSource.setDriverClassName(jdbcProperties.getDriverClassName());  //这里的this代表全局变量 不可以在函数括号中写 此处也可以省略this
       dataSource.setUrl(jdbcProperties.getUrl());
       dataSource.setUsername(jdbcProperties.getUsername());
       dataSource.setPassword(jdbcProperties.getPassword());
       return dataSource;
   }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

第四种注入方式:@ConfigurationProperties(prefix=“jdbc”)

package cn.itcast.springboot.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.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
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  //声明一个类是java配置类 相当于一个xml配置文件
//@PropertySource("classpath:application.properties")  //读取资源文件
@EnableConfigurationProperties(JdbcProperties.class)   //让自动注入可行
public class JdbcConfiguration {
//    //2.接收之后注入 用value以及$符号
//    //1.读取好之后接收  设置参数
//    @Value("${jdbc.driverClassName}")
//    private String driverClassName;
//    @Value("${jdbc.url}")
//    private String url;
//    @Value("${jdbc.username}")
//    private String username;
//    @Value("${jdbc.password}")
//    private String password;


    //写了属性读取类之后 可实例化在此处进行使用
//    第二种注入方式 不用Autowired
//    @Autowired
//    private JdbcProperties jdbcProperties;

//    public JdbcConfiguration (JdbcProperties jdbcProperties){
//        this.jdbcProperties = jdbcProperties;
//    }

    @Bean //把方法的返回值注入到spring容器里
    @ConfigurationProperties(prefix = "jdbc")   //configuration 自动读取application 里面的配置文件
    public DataSource dataSource(){
       DruidDataSource dataSource = new DruidDataSource();
       return dataSource;
   }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/90541
推荐阅读
相关标签
  

闽ICP备14008679号