正确理解springboot的常用注入方式

山涧清泉      2022-04-23     276

关键词:

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的注入有三种方法
[email protected]注入
@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
版权声明:本文为博主原创文章,转载请附上博文链接!







































































springboot常用注解及外部jar包注入方式

参考技术A上一篇<<<SpringBoot启动流程说明下一篇>>>SpringBoot之web开发推荐阅读:<<<SpringBoot核心设计理念和核心组件<<<SpringBoot中有哪些starter<<<如何自定义SpringBootstarter<<<SpringBoot启动流程说明... 查看详情

spring常用的注入方式有哪些?

Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入。  参考链接:Spring常用的三种注入方式 查看详情

springboot启动时排除一些不需要注入的组件

参考技术A1、@SpringBootApplication注解中的exclude只能排除自动配置的类,例如:2、@ComponentScan注解中的excludeFilters才是排除自定义配置类的正确方式,例如: 查看详情

springboot.02.springboot创建对象与属性注入

SpringBoot创建对象与属性注入前言所谓SpringBoot创建对象就是将对象交给Spring来管理。在SpringBoot中我们可以使用注解。比如我们常用的@Component及@Controller、@Service、@Repository等。不过这种方式一次只能创建一个对象;... 查看详情

springboot.02.springboot创建对象与属性注入(代码片段)

SpringBoot创建对象与属性注入前言所谓SpringBoot创建对象就是将对象交给Spring来管理。在SpringBoot中我们可以使用注解。比如我们常用的@Component及@Controller、@Service、@Repository等。不过这种方式一次只能创建一个对象;... 查看详情

springboot.02.springboot创建对象与属性注入(代码片段)

SpringBoot创建对象与属性注入前言所谓SpringBoot创建对象就是将对象交给Spring来管理。在SpringBoot中我们可以使用注解。比如我们常用的@Component及@Controller、@Service、@Repository等。不过这种方式一次只能创建一个对象;... 查看详情

spring常用的三种注入方式(代码片段)

...8379720 Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入。构造方法注入先简单了解一下测试项目的结构,用maven构建的,四个包:entity:存储实体,里面... 查看详情

springboot就这样读配置,全部都整理好了(代码片段)

今天继续写springboot,整理下零散的知识,系统化的记忆能更好的理解。springboot读取配置的几种方式这个大家一般都知道,今天稍微整理下,回头看的时候也有个笔记。一般我们常用的有几种方式使用注解@value... 查看详情

springboot-配置文件属性注入-2种方式

方式一:@Component@DatapublicclassPropertyBean{@Value("${datasource.url}")privateStringurl;@Value("${datasource.username}")privateStringuserName;}方式二:@Component@Configuration@EnableAutoConfigurationpublic 查看详情

创建springboot项目常用的两种方式

在开发中,常用的创建的SpringBoot项目方式有两种,一种是使用SpringInitializr,一种是创建一个Maven工程,导入SpringBoot的依赖使用IDEA的SpringInitializr的方式选择IDEA的File->New->Project选择SpringInitializr,如下图:在ProjectMetadata页面,... 查看详情

不用被动注入的方式,主动从springboot应用容器中的获取bean的方法

packagecom.bytedance.kunlun.interpreter.util;importorg.springframework.beans.BeansException;importorg.springframework.context.ApplicationContext;importorg.springframework.context.ApplicationContextAwa 查看详情

springboot进行属性的注入,list,map,arr,和其他的属性的注入(代码片段)

SpringBoot属性注入方式总结:使用两种方式进行注入:1.@Value注解加上@Configuration让SpringBoot识别该类,在Application.yml文件中的注入写上注入的东西,注入的类User上面加上@ConfigurationPropertes(prefix=“nt”),... 查看详情

bean无法被注入的常见问题和springboot的三种扫描并加载bean方式(代码片段)

一、bean无法被注入的常见问题某个类中的成员,如果是采用@Autowired注入SpringBean,则当前类的实例,必须也是SpringBean才能成功注入,即该实例不能用newxxx()来获得,这种方式获得的实例无法调用@Autowired... 查看详情

springboot配置的参数注入

参考技术Aspringboot的参数注入有多种方式  类似与conpoment的类注入的话 可以用springboot的注解@ConfigurationProperties(prefix="spring.merchantinfo")配置 如图所示还有一种是直接注入@Autowired这种方式单一属性值的注入... 查看详情

掌握这些springboot的配置方式,让你工作效率翻个倍!(代码片段)

springboot的多种配置方式java配置主要靠java类和一些注解,比较常用的注解有:@Configuration:声明一个类作为配置类,代替xml文件@Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签@Value:基本类型或String属性注入@PropertyS... 查看详情

掌握这些springboot的配置方式,让你工作效率翻个倍!(代码片段)

springboot的多种配置方式java配置主要靠java类和一些注解,比较常用的注解有:@Configuration:声明一个类作为配置类,代替xml文件@Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签@Value:基本类型或String属性注入@PropertyS... 查看详情

springboot自动配置的实现原理

一,配置属性类其实就是值对象注入的方式去配置一些Spring常用的配置,我们编写一个最简单的配置对象。@ConfigurationProperties(prefix="hello")//@Component//如果这里添加了注解那么在自动配置类的时候就不用添加@enableConfigurationProperties(H... 查看详情

springboot常用注解:@resource/@component与@autowired的使用

一、@Resource与@Component  SR-250标准注解,推荐使用它来代替Spring专有的@Autowired注解。  @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按byName自动注入罢了。  @Resource有两个属性是比较重要的... 查看详情