我爱Java系列之---【SpringBoot中常用的注解和两种注入方式】

@EnableConfigurationProperties(DataSourceProperties.class) 来声明要使用DataSourceProperties 这个类并初始化该类对象,该类不用放在IOC容器中,可以通过该注解直接使用。

 

2.@Component:一般写在类上边,通过该注解将当前类初始化到Spring的IOC容器中,其他类若想调用,直接用@Autowired去容器中拿。

 

3.@Confifiguration: 一般写在类上边,标明该类是一个配置类,被注解的类内部一般包含一个或多个被@Bean注解的方法。相当于把该类作为spring的xml配置文件中的 <beans></beans> 。

 

4.@Bean注解的方法,这些方法将会被spring进行扫描,并初始化到Spring容器,bean的id为方法名。@Bean注解主要用在@Confifiguration注解的类里,也可以用在@Component注解的类里。

 

5.@ConfifigurationProperties:注解声明当前类为属性读取类,这个注解并不会初始化该类对象到IOC中,prefix="jdbc" 读取配置文件中(properties或yml),前缀为jdbc的值。

*****************************************************************************

常见的两种注入方式:

  第一种注入方式:如果我们需要将配置文件的数据库连接参数,读取到java对象中,可以用@Component@ConfifigurationProperties注解实现。

    1)新建application.properties   

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://127.0.0.1:3306/springboot
jdbc.username=root
jdbc.password=123456

    2)新建一个类,用来进行属性绑定并注入:

/*** @ConfigurationProperties 注解声明当前类为属性读取类 * @Component 注解将当前类JdbcProperties初始化到IOC中 */ 
@Component
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String url;
private String driverClassName;
//此处省略get和set方法,及部分属性

    3)JdbcProperties已被初始化到IOC中,我们就可以通过spring的bean注入使用了

  第二种注入方式:这里仍然以配置数据库为例,使用@ConfifigurationProperties@EnableConfifigurationProperties完成。

    1)导入数据源maven坐标

<dependency> 
    <groupId>com.alibaba</groupId> 
    <artifactId>druid</artifactId>
     <version>1.1.6</version>
</dependency>

    2)新建一个类,用来进行属性注入:

@ConfigurationProperties(prefix = "jdbc") 
public class DataSourceProperties{
    private String url; 
    private String driverClassName;
    private String username; 
    private String password;
     // ... 略 // getters 和 setters
 }
    3)在DataSourceConfifig中使用这个DataSourceProperties属性读取类对象:
复制代码
@Configuration  //标明该类是一个配置类

@EnableConfigurationProperties(DataSourceProperties.class)//直接声明要使用DataSourceProperties类,来读取配置文件
public class DataSourceConfig {
    @Bean
    public DataSource dataSource(DataSourceProperties properties){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUsername(properties.getUsername());
       druidDataSource.setDriverClassName(properties.getDriverClassName());
        druidDataSource.setUrl(properties.getUrl());
        druidDataSource.setPassword(properties.getPassword());
        return druidDataSource;
}
}
复制代码

    4)测试结果:

注意:import javax.sql.DataSource;

 

总结:
方式1:@Component@ConfifigurationProperties,@Autowired注解实现。
方式2:@ConfifigurationProperties + @EnableConfifigurationProperties注解实现。

 

 

posted on   少年攻城狮  阅读(3582)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示