一、Spring的属性注入方式(以前的方式)

java配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有:

@Configuration:声明一个类作为配置类,代替xml文件
@Bean:声明在方法上,将方法的返回值加入Bean容器,代替<bean>标签
@Value:属性注入
@PropertySource:指定外部属性文件。在类上添加@PropertySource("classpath:/jdbc.properties")
我们接下来用以前配置来尝试实现连接池配置

1. 引入数据源连接依赖

<dependency><groupId>com.github.drtrang</groupId><artifactId>druid-spring-boot2-starter</artifactId><version>1.1.10</version>
</dependency>

2. 添加jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test
jdbc.username=root
jdbc.password=123

3. 配置数据源

创建JdbcConfiguration类:  使用spring中的value注解对每个属性进行注入,用bean注解将返回值添加到容器中

@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfiguration {@Value("${jdbc.url}")String url;@Value("${jdbc.driverClassName}")String driverClassName;@Value("${jdbc.username}")String username;@Value("${jdbc.password}")String password;@Beanpublic DataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl(url);dataSource.setDriverClassName(driverClassName);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;}
}

解读:

@Configuration:声明JdbcConfiguration是一个配置类。
@PropertySource:指定属性文件的路径是:classpath:jdbc.properties
通过@Value为属性注入值。
通过@Bean将 dataSource()方法声明为一个注册Bean的方法,Spring会自动调用该方法,将方法的返回值加入Spring容器中。相当于以前的bean标签
然后就可以在任意位置通过@Autowired注入DataSource了!

二、SpringBoot的属性注入方式

springboot对上面的配置进行了优化

1. SpringBoot注入方式1: 属性注入 (最常用的方式)

在上面的案例中,我们实验了java配置方式。不过属性注入使用的是@Value注解。这种方式虽然可行,但是不够强大,因为它只能注入基本类型值。

在SpringBoot中,提供了一种新的属性注入方式,支持各种java基本数据类型及复杂类型的注入。

1.1 新建JdbcProperties,用来进行属性注入:

@ConfigurationProperties(prefix = "jdbc")   //这里需要定义出在application文件中定义属性值得前缀信息public class JdbcProperties {private String url;private String driverClassName;private String username;private String password;// ... 略// getters 和 setters
}

这里面就不需要在设置value属性,他是通过set方法进行资源自动注入的.

注意:set方法中的属性名的值要和资源文件中属性文件中值名字保持一致

1.2 在application.properties(yml)中定义配置信息

Springboot在启动时并不会加载其他配置文件,它只加载默认的配置文件application.properties(yml),因此,将配置信息添加到这里,通过前缀进行区分,进行引用

1.3 引用数据源 使用@EnableConfigurationProperties(引用属性类的字节码)引用配置信息

2. springboot注入方式2: 构造方法注入

之前的操作与注入方式1一样,只是这里注入的方式不一样

这里不需要添加@Autowired注解,也不需要在添加@Bean注解,在要使用数据源的类,使用他的构造方法进行注入

3. springboot注入方式3: 通过bean方法的形参进行注入

在方法上的形参上进行定义要注入的数据源,方法对数据源初始化处理后,通过bean注解将方法的返回值注入到容器中

4. spring注入方式4: 最优雅的注入

不需要jdbcProperties

直接将配置注解添加到方法上,这是因为DataSource内部也是有set方法.进行自动注入.

但是,也是需要有前提的:必须保证注入的有set方法,并且set方法的名字和配制文件中的属性名需要是一样的.这里使用的是datasource中内部的set方法

SpringBoot 属性注入的四种方式相关推荐

  1. springboot属性注入的四种方式

    springboot属性注入 1.前言:介绍以前spring中配置 java配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有: @Configuration:声明一个类作为 ...

  2. springboot属性注入的四种方法

    springBoot属性注入的四种方法: 以注入jdbc数据源为例 1.首先在resources下面创建application.properties文件,并添加jdbc数据源属性 jdbc.drive ...

  3. Spring IOC (DI) 依赖注入的四种方式

    依赖注入的四种方式: set 注入 赋值,默认使用的是set() 方法,依赖注入底层是通过反射实现的 <bean id="student" class="cust. ...

  4. java中四种注入注解,Spring中依赖注入的四种方式

    在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的sett ...

  5. Spring属性注入的三种方式(超详细)

    属性注入的三种方式 使用set方法进行注入 使用有参构造函数进行注入 使用p名称空间注入 首先了解下面两个名词的含义: IOC:控制反转(Inversion of Control,缩写为IoC),是面 ...

  6. 【Spring】Spring的IOC依赖注入的四种方式

    作者简介:大家好,我是五度鱼,一个普通的Java领域博主,不停输出Java技术博客和干货. 座右铭:锲而不舍,金石可镂. 个人主页:五度鱼学Java的主页 文章目录 前言 1. set注入 2. 构造 ...

  7. spring依赖注入的四种方式

    平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程 ...

  8. (SpringBoot)依赖注入的几种方式总结

    Spring的依赖注入已经是街知巷闻的了,我们接触的最多就是 1.@Autowired和@Resource 相信这两种都用到烂大街了,我也没必要去介绍了.我这里主要介绍另外两种获取注入的方式 2.工具 ...

  9. 通过@Import注解把类注入容器的四种方式

    文章目录 1. @Import导入的四种方式 2. 准备工作 ①:导入普通类ConfigA ②:导入`@Configuration`配置类ConfigB ③:导入`ImportSelector`的实现 ...

最新文章

  1. CTC损失函数 Transformer用的
  2. JVM结构、GC工作机制详解
  3. 系统测试和集成测试的区别
  4. 前端一HTML:十八:元素的显示方式
  5. android是java_为什么大家都用JAVA写android程序
  6. python spyder跑出的数据部分有些不变是怎么回事_解决Python spyder显示不全df列和行的问题...
  7. python mockito arg_that_编程高阶用法–开发者高频词汇
  8. Java的二级动态菜单实现
  9. RBF(径向基函数)神经网络
  10. 用友 hr win10 java_用友u8win10安装教程_用友u8win10安装方法步骤教程_用友u8安装教程...
  11. 自动化学科前沿讲座分享,作业,自动化与人工智能
  12. 崩坏3服务器维护2月8号,崩坏3 8月29日更新官方公告
  13. 计算机毕业设计springcloud基于微服务的家居体验平台的设计与实现
  14. 不会“思维”只会“批判”,谨防网络舆论“怨妇化”
  15. 前端学HTTP之web攻击技术
  16. C语言计算圆柱的表面积 体积
  17. 什么是缓冲区(buffer),什么是缓存(cache)
  18. C语言实现一个走迷宫小游戏(深度优先算法)
  19. java实体对应json_JSON和Java实体之间的数据类型映射
  20. android带圆点的轮播图,Android 实现轮播图效果 底部圆点布局实现

热门文章

  1. 【Vue3】0-99
  2. 舌尖上的硬件: 厨房中探秘图形渲染
  3. 上海市重点产业领域人才专项奖励单个人员奖励不超过50万元
  4. React基础之Refs的理解与使用
  5. web10.CSS3
  6. ADB安装及使用详解
  7. ixp425开发板下移植hostapd做虚拟ap环境
  8. Gecco学习笔记(二)
  9. dfp 算法matlab,MATLAB拟牛顿法之DFP与BFGS算法
  10. Ubuntu加载移动硬盘