解读:
@Configuration:声明我们JdbcConfig是一个xml配置类
@PropertySource:指定属性文件的路径是: classpath: jdbc. properties
@Value:通过@Value为属性注入值
@Bean:通过@Bean将dataSource() 方法声明为一一个注册Bean的方法, Spring会自动调用
该方法,将方法的返回值加入Spring容器中。

然后我们就可以在任意位置通过@Autowired注入DataSource了!

package cn.hm1006;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;
/**
 * liuxiansen
 * hm1006.cn
 */
@Configuration
//声明JdbcConfig是一个xml配置类
@PropertySource("classpath:jdbc.properties")
//引入外部熟悉文件
public class JdbcConfig {

    @Value("${jdbc.driverClassName}")
    //通过“@Value 为属性注入值
    private String driverClassName;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Bean
    //这里的Bean同xml配置中一样
    //通过@Bean将、dataSource() 方法声明为一一个注册Bean的方法,Spring会自动调用
    //该方法,将方法的返回值加入Spring容器中。然后我们就可以在任意位置通过@Autowired注入DataSource了!
    public DataSource dataSource(){
        DruidDataSource source = new DruidDataSource();
        source.setDriverClassName(driverClassName);
        source.setUrl(url);
        source.setUsername(username);
        source.setPassword(password);
        return source;
    }
}

image.png

Q.E.D.


如人饮水、冷暖自知