spring中的屬性注入


在Spring3.0開始,Spring官方就已經開始推薦使用java配置來代替傳統的xml配置了。

一、java配置常用註解

java配置主要靠java類和一些註解來達到和xml配置一樣的效果,比較常用的註解有:

  • @Configuration:聲明一個類作爲配置類,代替xml文件
  • @Bean:聲明在方法上,將方法的返回值加入Bean容器,代替標籤
  • @Value:屬性注入
  • @PropertySource:指定外部屬性文件。

二、我們接下來用java配置來嘗試實現連接池配置

在這裏插入圖片描述

1、引入依賴

首先在pom.xml中,引入Druid連接池依賴:

    <dependency>
        <groupId>com.github.drtrang</groupId>
        <artifactId>druid-spring-boot2-starter</artifactId>
        <version>1.1.10</version>
    </dependency>

2、添加jdbc.properties

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

3、配置數據源

創建JdbcConfiguration類:

@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfiguration {

    @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:聲明JdbcConfiguration是一個配置類。
  • @PropertySource:指定屬性文件的路徑是:classpath:jdbc.properties
  • 通過@Value爲屬性注入值。
  • 通過@Bean將 dataSource()方法聲明爲一個註冊Bean的方法,Spring會自動調用該方法,將方法的返回值加入Spring容器中。相當於以前的bean標籤

然後就可以在任意位置通過@Autowired注入DataSource了!

三、測試成功!

我們在HelloController中測試:

@RestController
public class HelloController {

    @Autowired
    private DataSource dataSource;

    @GetMapping("show")
    public String test(){
        return "hello Spring Boot!";
    }

}

在test方法中打一個斷點,然後Debug運行並查看:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章