SpringBoot专题学习Part6:SpringBoot属性的注解配置方式

从Spring1.0到5.x,配置方式经历了从XML到注解再到Java配置的转变。3.0后,Java配置逐渐成熟,SpringBoot进一步优化,推荐全注解配置,如@Configuration与@Bean。本文详细对比了XML、Java配置及SpringBoot优化后的配置方式。

配置的历史:

  • Spring1.0时代
    此时jdk1.5刚刚出来 注解开发并未盛行 一些Spring配置都是xml格式
  • Spring2.0时代
    Spring引入了注解开发 但并不完善 因此并未完全替代xml 此时是将xml与注解相结合
  • Spring3.0时代
    3.0以后的Spring的注解已经非常完善了 因此Spring推荐使用完全的java配置来代替xml配置
    但在国内并未推广流行
  • 现在Spring的版本已经到了5.x了

配置方式的比较:

1、传统的XML配置方式的属性注入
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
	<property name="driverClass" value="${jdbc.driverClassName}"/>
	<property name="jdbcUrl" value="${jdbc.url}"/>
	<property name="user" value="${jdbc.user}"/>
	<property name="password" value="${jdbc.password}"/>
</bean>
2、Java配置(可读性强 容易被理解)

Java配置主要靠Java类和一些注解代替xml
常用注解:

  • @Configuration:声明一个类作为配置类 代替xml文件
  • @Bean:声明在方法上 将方法的返回值加入Bean容器 代替标签
  • @Value:属性注入
  • @PropertySource:指定外部属性文件
①、Java配置方式的属性注入:
@Configuration
@PropertySource(value = "classpath:jdbc.properties")
public class JdbcConfig {
    @Value("${jdbc.driverClassName}")
    String driverClassName;
    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.username}")
    String username;
    @Value("${jdbc.password}")
    String password;

    @Bean
    public DataSource getDataSource()
    {
        DruidDataSource dataSource=new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}
②、Spring Boot优化后的Java配置方式的属性注入【方式一】

特点:可复用 ★

属性Java文件:
单纯获得配置文件中的属性
注解:
@ConfigurationProperties(prefix = "")注解可以将配置文件中的配置绑定到一个类中 代表这是一个配置文件
prefix声明了要使用的配置的属性名的前缀为"jdbc"

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

使用属性文件:
注解:
在配置了@Configuration注解之后 Spring就会将该类当做一个xml文件 并读取其中的内容
@EnableConfigurationProperties代表启用配置属性并交给Spring容器 此后就可以在任何地方使用该配置
@Bean声明在方法上 将方法的返回值加入Bean容器 代替<Bean>标签
将添加该注解的方法的返回值添加到容器中 容器中该组件的默认id为方法的方法名

@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
    @Bean
    public DataSource getDataSource(JdbcProperties jdbcProperties)
    {
        DruidDataSource dataSource=new DruidDataSource();
        dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
        dataSource.setUrl(jdbcProperties.getUrl());
        dataSource.setUsername(jdbcProperties.getUsername());
        dataSource.setPassword(jdbcProperties.getPassword());
        return dataSource;
    }
}

@EnableConfigurationProperties之后可以随意使用配置文件类
例:

@Autowired
JdbcProperties jdbcProperties;
    
public JdbcConfig(JdbcProperties jdbcProperties){
        this.jdbcProperties=jdbcProperties;
}
③、Spring Boot优化后的Java配置方式的属性注入【方式二】

特点:更优雅 ★

@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource getDataSource()
{
	return new DruidDataSource();
}

流程:
当Spring扫描到@Bean即调用该方法
然后知道要使用以"jdbc"开头的属性 就会去配置文件检查符合条件的属性值
然后检查返回的类是否有同名的set()方法 若有 即自动注入

总结:

SpringBoot推荐给容器中添加组件的方式:即全注解的方式

  • 1、配置类添加@Configuration注解以取代Spring配置文件
  • 2、使用@Bean注解给容器中添加组件

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值