1、简单的Java配置

 配置文件(jdbc.properties)  

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

  编写一个配置类

 @Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig { @Value("${jdbc.url}")
String url;
@Value("${jdbc.driverClassName}")
String driverClassName;
@Value("${jdbc.username}")
String username;
@Value("${jdbc.password}")
String password; @Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName(driverClassName);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
} 注解解读
@Configuration: 声明JdbcConfig是一个配置类
@PropertySource: 指定属性文件的路径
@value: 通过@value为属性注入值
@Bean: 通过dataSource()方法声明为一个注册Bean的方法,Spring会自动调用该方法,该方法的返回值会加入到Spring的容器中
然后就可以在任何位置注入DataSource

当配置上属性后便可以注入任何类使用了

 @RestController
public class HelloController { @Autowired
private DataSource dataSource;
@Autowired
private JdbcConfig jdbcConfig; @GetMapping("hello")
public String hello() {
System.out.println(jdbcConfig.getDriverClassName()+"=="+jdbcConfig.getUrl());
return "hello, spring boot!" + dataSource;
} }

打印结果

2、改造原有缺陷,SpringBoot推荐的方式

以上方法的注入方式,虽然属性数据注入进去了,但是不够强大,因为他只能注入基本数据类型。

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

接下来我们重新创建一个类,用来属性注入

 @Data
@ConfigurationProperties(prefix = "jdbc")
public class SpringBootProperty {
private String url;
private String driverClassName;
private String username;
private String password; }
注解解析:
  @ConfigurationProperties注解声明当前类为属性读取类
  prefix:读取数据文件中,前缀为jdbc的值
在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致
属性文件是定义在application.yml文件中的
 spring:
application:
name: property
server:
port: 8083
jdbc:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test
username: root
password: 123

接下来在要使用的地方通过

@EnableConfigurationProperties(SpringBootProperty.class)来声明要使用SpringBootProperty这个类的对象
 @RestController
@EnableConfigurationProperties(SpringBootProperty.class)
public class HelloController { @Autowired
private SpringBootProperty springBootProperty;
@Autowired
private DataSource dataSource;
@Autowired
private JdbcConfig jdbcConfig; @GetMapping("hello")
public String hello() {
System.out.println("SpringBoot推荐的属性注入方式: " + springBootProperty.getDriverClassName() + "==" + springBootProperty.getUrl());
return "hello, spring boot!";
}
}

启动类

 @SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class); }
}

End......

Spring中@value以及属性注入的学习的更多相关文章

  1. Spring中集合类型属性注入

    我们都知道如何去注入普通属性的值,非常简单,那么我们如何去注入开发中常见的集合类型的属性了,别急,往下看. 这里将介绍如何给Map list set Array Properties 这些属性注入值. ...

  2. 【坑】Spring中抽象父类属性注入,子类调用父类方法使用父类注入属性

    运行环境 idea 2017.1.1 spring 3.2.9.RELEASE 需求背景 需要实现一个功能,该功能有2个场景A.B,大同小异 抽象一个抽象基类Base,实现了基本相同的方法BaseMe ...

  3. spring中bean配置和注入场景分析

    bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean,并 ...

  4. spring练习,使用Eclipse搭建的Spring开发环境,属性注入通过构造方法方式实现,模拟用户的正常登录。

    相关 知识 >>> 相关 练习 >>> 实现要求: 使用Eclipse搭建的Spring开发环境,属性注入通过构造方法方式实现,模拟用户的正常登录.要求如下: 通过 ...

  5. Ninject中如果在抽象类中使用了属性注入,则属性必须设置为protected或public

    Ninject中如果在抽象类中使用了属性注入,则属性必须设置为protected或public 不能使用private,否则无法注入成功,会报null异常

  6. Spring boot将配置属性注入到bean类中

    一.@ConfigurationProperties注解的使用 看配置文件,我的是yaml格式的配置: // file application.yml my: servers: - dev.bar.c ...

  7. Spring中对象和属性的注入方式

    一:Spring的bean管理 1.xml方式 bean实例化三种xml方式实现 第一种 使用类的无参数构造创建,首先类中得有无参构造器(重点) 第二种 使用静态工厂创建 (1)创建静态的方法,返回类 ...

  8. Spring中如何向 Bean注入系统属性或环境变量

    [转自] http://unmi.cc/spring-injection-system-properties-env/ 在 Spring 中为 javabean 注入属性文件中的属性值一般人都知道的, ...

  9. Spring中Ioc容器的注入方式

    1 通过setter方法注入 bean类: package com.test; public class UserServiceImplement implements IUserService { ...

随机推荐

  1. Windows 10开发基础——XML和JSON (一)

    主要内容: JSON的序列化与反序列化 XML的序列化与反序列化 1.JSON的序列化与反序列化     JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,它 ...

  2. Win10版《芒果TV》全平台直播第89届奥斯卡颁奖典礼,特设第二演播室带来一手资讯

    芒果TV为所有中国影迷们带来的:今年的奥斯卡直播与往年格外不同,为了让网友们观看这场盛典得到多维度体验,不管是来看热闹的还是看门道的都看得开心尽兴,芒果TV特设第二演播室,为大家带来第一手新鲜热辣的现 ...

  3. 2013 lost connection to mysql server during query

    navicat 导入sql大脚本到mysql数据库报错 解决办法: 修改mysql.ini配置文件: max_allowed_packet=256M wait_timeout=5000

  4. 中资收购美新半导体,为何能通过CFIUS审查(其实是国内公司,技术水平国内领先,和国际仍有差距)

    日前,华灿光电发布公告称,旗下子公司和谐光电收购美国美新半导体终获得CFIUS审查通过.这是中资收购豪威科技.图芯科技等公司之后,再次从美国成功收购半导体企业.而且本次中资收购美新半导体还是在特朗普上 ...

  5. MySQL半同步复制搭建

    默认情况下,MySQL 5.5/5.6/5.7和MariaDB 10.0/10.1的复制是异步的,异步复制可以提供最佳性能,主库把binlog日志发送给从库,这一动作就结束了,并不会验证从库是否接收完 ...

  6. 解决手机提示TF卡受损需要格式化问题

    昨晚因为上QQ FOR PAD后.关机.结果又杯具了.上次无意看到一个SD卡修复命令,收藏起来了.一试,还真管用.现把它写出来.分享给大家.以后出现SD卡受损,千万不要再格式化内存卡了.修复过程:1. ...

  7. Qt编程规范

    一.概述 良好的编程规范可以大幅提高一个程序的可读性.可理解性和可维护性. 本规范参考Effective C++中文版.Google C++编码规范及Qt编码风格. 二.头文件 1)      #de ...

  8. cookie 和 session 区别

    二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪录下来.当下次你再光临同一个网站,WEB 服务器会先看看有 ...

  9. git上如何处理无法clone和merge

    对于一些需要FQ才能克隆下来的项目,我们需要使用代理 进入terminal: 设置代理: git config --global http.proxy http://127.0.0.1:1087 gi ...

  10. LR编写Socket脚本方法1(XML/16进制报文data.ws格式)

    本文主要讲述了Socket协议脚本的基础知识和编写方法,让大家能够在短时间内快速掌握简单的Socket协议脚本的编写方法.1.socket协议介绍Socket协议有万能协议之称,很多系统底层都是用的s ...