java微服务day02源代码springboot属性注入自动配置(代码片段)

蓝盒子bluebox 蓝盒子bluebox     2022-12-11     383

关键词:

Java 微服务day01 源代码 SpringBoot的SpringMVC快速入门(一)
Java 微服务 day01 源代码 Java的配置(二)
Java 微服务 day02 源代码 SpringBoot 属性注入 自动配置 (一)
Java 微服务 day02 源代码 SpringBoot 实战开发 (二)创建相关数据库,搭建服务,搭建普通工程,设置访问后缀以及端口号
Java 微服务 day02 源代码 SpringBoot 实战开发 (三)SpringMVC高级配置:拦截器:HandlerExecutionChain
Java 微服务 day02 源代码 SpringBoot 实战开发 (四)整合JDBC和事务(数据库连接池)
Java 微服务 day02 源代码 SpringBoot 实战开发 (五)整合Mybatis(数据库连接池),通用Mapper整合,业务层整合

一、SpringBoot 属性注入方式一

1、修改jdbc.properties文件的名称


2、创建JdbcProperties类



package com.itzheng.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties
public class JdbcProperties 

    String url;
    String driverClassName;
    String username;
    String password;


3、完善pom.xml添加

先安装Lombok

引入Lombok

    <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
            <scope>provided</scope>
    </dependency>

4、完善JdbcProperties

添加@Data后会自动生成set和get方法

package com.itzheng.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "jdbc")
@Data
public class JdbcProperties 
    String url;
    String driverClassName;
    String username;
    String password;


5、修改JdbcConfig类使用JdbcProperties(启用配置属性)

package com.itzheng.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
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 //声明一个类作为配置类,代替xml文件
//@PropertySource("classpath:application.properties")
@EnableConfigurationProperties(JdbcProperties.class) //使用配置属性
public class JdbcConfig 
//    @Value("$jdbc.url")
//    String url;
//    @Value("$jdbc.driverClassName")
//    String driverClassName;
//    @Value("$jdbc.username")
//    String username;
//    @Value("$jdbc.password")
//    String password;
    @Bean  //声明在方法上,将方法返回值加入Bean容器,代替<bean>标签
    public DataSource dataSource(JdbcProperties prop)
      DruidDataSource dataSource =  new DruidDataSource();
      dataSource.setDriverClassName(prop.getDriverClassName());
      dataSource.setUrl(prop.getUrl());
      dataSource.setUsername(prop.getUsername());
      dataSource.setPassword(prop.getPassword());
      return dataSource;
    


6、运行代码

添加断点


7、可以在任意位置使用

二、SpringBoot 属性注入方式二

1、修改JdbcProperties

2、修改JdbcConfig


    @Bean  //声明在方法上,将方法返回值加入Bean容器,代替<bean>标签
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource()
      return  new DruidDataSource();
    


全部代码

package com.itzheng.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration //声明一个类作为配置类,代替xml文件
//@PropertySource("classpath:application.properties")
//@EnableConfigurationProperties(JdbcProperties.class) //使用配置属性
public class JdbcConfig 
//    @Value("$jdbc.url")
//    String url;
//    @Value("$jdbc.driverClassName")
//    String driverClassName;
//    @Value("$jdbc.username")
//    String username;
//    @Value("$jdbc.password")
//    String password;

//    @Autowired
//    JdbcProperties jdbcProperties;
//
//    public JdbcConfig(JdbcProperties jdbcProperties)
//        this.jdbcProperties = jdbcProperties;
//    

/*
    @Bean  //声明在方法上,将方法返回值加入Bean容器,代替<bean>标签
    public DataSource dataSource(JdbcProperties prop)
      DruidDataSource dataSource =  new DruidDataSource();
      dataSource.setDriverClassName(prop.getDriverClassName());
      dataSource.setUrl(prop.getUrl());
      dataSource.setUsername(prop.getUsername());
      dataSource.setPassword(prop.getPassword());
      return dataSource;
    
    */

    @Bean  //声明在方法上,将方法返回值加入Bean容器,代替<bean>标签
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource()

      return  new DruidDataSource();
    



3、重新运行



三、SpringBoot 属性注入方式三yaml注入

1、创建application.yaml


使用更优雅的方式下配置文件

jdbc:
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://127.0.0.1:3306/itzheng
  username: root
  password: 123
  user:
    name: jack
    age : 21
    language:
      - java
      - python
      - andorid
      - sql

2、完善JdbcProperties

package com.itzheng.config;
import com.sun.org.apache.xpath.internal.operations.String;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.List;
//@ConfigurationProperties(prefix = "jdbc")
@Data
public class JdbcProperties 
    String url;
    String driverClassName;
    String username;
    String password;
    User user = new User();
    class User
        String name;
        Integer age;
        List<String> language;
    

四、自动配置

1、@SpringBootApplication

这个注解的作用与@Configuration作用相同

都是用来声明当前类是一个配置类

可以通过@Bean注解生成IOC容器管理的bean

在QuickStartApplication中定义bean

并在@HelloController中注入使用

下面是@HelloController

留下一个即可

2、覆盖WebMvcProperties配置服务器相关内容


在application.yaml当中

3、总结

SpringBoot为我们提供了默认配置,而默认配置生效的条件一般有两个;

你引入了相关依赖

你自己没有配置Bean

1)启动器

所以,我们如果不想配置,

只需要引入依赖即可,而依赖版本我们也不用操心,

因为只要引入了SpringBoot提供的stater(启动器),就会自动管理依赖及版本了。

因此,玩SpringBoot的第一件事情,就是找启动器,SpringBoot提供了大量的默认启动器

2)全局配置

另外,SpringBoot的默认配置,都会读取默认属性,而这些属性可以通过自定义

application.properties

文件来进行覆盖。这样虽然使用的还是默认配置,

但是配置中的值改成了我们自定义的。

因此,玩SpringBoot的第二件事情,

就是通过 application.properties来覆盖默认属性值,

形成自定义配置。

我们需要知道SpringBoot的默认属性key,非常多。

java微服务day02源代码springboot实战开发整合jdbc和事务(数据库连接池)(代码片段)

Java微服务day01源代码SpringBoot的SpringMVC快速入门(一)Java微服务day01源代码Java的配置(二)Java微服务day02源代码SpringBoot属性注入自动配置(一)Java微服务day02源代码SpringBoot实战开发(二)创建相关... 查看详情

java微服务day02源代码springboot实战开发创建相关数据库,搭建服务,搭建普通工程,设置访问后缀以及端口号(代码片段)

Java微服务day01源代码SpringBoot的SpringMVC快速入门(一)Java微服务day01源代码Java的配置(二)Java微服务day02源代码SpringBoot属性注入自动配置(一)Java微服务day02源代码SpringBoot实战开发(二)创建相关... 查看详情

java微服务day01源代码springboot的springmvc快速入门(代码片段)

Java微服务day01源代码SpringBoot的SpringMVC快速入门(一)Java微服务day01源代码Java的配置(二)Java微服务day02源代码SpringBoot属性注入自动配置(一)Java微服务day02源代码SpringBoot实战开发(二)创建相关... 查看详情

java微服务day02源代码springboot实战开发整合mybatis(数据库连接池),通用mapper整合,业务层整合(代码片段)

Java微服务day01源代码SpringBoot的SpringMVC快速入门(一)Java微服务day01源代码Java的配置(二)Java微服务day02源代码SpringBoot属性注入自动配置(一)Java微服务day02源代码SpringBoot实战开发(二)创建相关... 查看详情

java微服务day01源代码java的配置(代码片段)

Java微服务day01源代码SpringBoot的SpringMVC快速入门(一)Java微服务day01源代码Java的配置(二)Java微服务day02源代码SpringBoot属性注入自动配置(一)Java微服务day02源代码SpringBoot实战开发(二)创建相关... 查看详情

java微服务之springcloud快速入门day02feign(代码片段)

Java微服务之SpringCloud快速入门day02(二)Feign一、Feign在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码:StringbaseUrl="http://user-service/user/";Useruser=this.restTemplate.get 查看详情

java微服务之springcloud快速入门day02feign(代码片段)

Java微服务之SpringCloud快速入门day02(二)Feign一、Feign在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码:StringbaseUrl="http://user-service/user/";Useruser=this.restTemplate.get 查看详情

springcloud学习笔记day01(代码片段)

...要求:java8+mven+git、github+Nginx+RabbitMQ+SpringBoot2.02.JVM/JUC/JMM/GC/Nginx……2.微服务架构理论入门2.1.微服务架构概述什么是微服务?微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务ÿ... 查看详情

springcloud学习笔记day01(代码片段)

...要求:java8+mven+git、github+Nginx+RabbitMQ+SpringBoot2.02.JVM/JUC/JMM/GC/Nginx……2.微服务架构理论入门2.1.微服务架构概述什么是微服务?微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务ÿ... 查看详情

java微服务之springcloud快速入门day02zuul网关,面向服务的路由,zuul过滤器(代码片段)

Java微服务之SpringCloud快速入门day02(三)Zuul网关一、简介1、相关概念官网:https://github.com/Netflix/zuulZuul:维基百科:电影《捉鬼敢死队》中的怪兽,Zuul,在纽约引发了巨大强乱。事实上,在微服务架构中࿰... 查看详情

java微服务之springcloud快速入门day02zuul网关,面向服务的路由,zuul过滤器(代码片段)

Java微服务之SpringCloud快速入门day02(三)Zuul网关一、简介1、相关概念官网:https://github.com/Netflix/zuulZuul:维基百科:电影《捉鬼敢死队》中的怪兽,Zuul,在纽约引发了巨大强乱。事实上,在微服务架构中࿰... 查看详情

java微服务之springcloud快速入门day02hystrix线程隔离,服务降级(代码片段)

Hystrix1、简介Hystrix,英文意思是豪猪,全身都是刺,看起来就不好惹,是一种保护机制。Hystrix也是Netflix公司的一款组件。主页:https://github.com/Netflix/Hystrix那么Hystrix的作用是什么呢?具体要保护什么呢ÿ... 查看详情

java微服务之springcloud快速入门day02hystrix线程隔离,服务降级(代码片段)

Hystrix1、简介Hystrix,英文意思是豪猪,全身都是刺,看起来就不好惹,是一种保护机制。Hystrix也是Netflix公司的一款组件。主页:https://github.com/Netflix/Hystrix那么Hystrix的作用是什么呢?具体要保护什么呢ÿ... 查看详情

java微服务之springcloud快速入门day01eureka注册中心高级部分(集群)(高可用)(代码片段)

...建立的eureka-server服务提供者提供服务的应用,可以是SpringBoot应用,也可以是其它任意技术实现,只要对外提供的是Rest风格服务即可。本例中就是我 查看详情

java微服务之springcloud快速入门day01eureka注册中心高级部分(集群)(高可用)(代码片段)

...建立的eureka-server服务提供者提供服务的应用,可以是SpringBoot应用,也可以是其它任意技术实现,只要对外提供的是Rest风格服务即可。本例中就是我 查看详情

java之springcloud微服务搭建网关springcloudgateway微服务网关gateway(第三个阶段)springboot项目实现商品服务器端是调用(代码片段)

...oudGateway微服务网关GateWay(第三个阶段)【二】【SpringBoot项目实现商品服务器端是调用】一、微服务网关GateWay1、Gateway简介(1)简介(2)核心概念二、入门案例1、入门案例(1)创建工程导入依赖&... 查看详情

springcloud学习笔记day01(代码片段)

...要求:java8+mven+git、github+Nginx+RabbitMQ+SpringBoot2.02.JVM/JUC/JMM/GC/Nginx……2.微服务架构理论入门2.1.微服务架构概述什么是微服务?微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务ÿ... 查看详情

java微服务之springcloud快速入门day01初始springcloud(代码片段)

一、SpringCloud的简介微服务是一种架构方式,最终肯定需要技术架构去实施。微服务的实现方式很多,但是最火的莫过于SpringCloud了。为什么?后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大。... 查看详情