1. 程式人生 > 實用技巧 >Spring的Java配置方式和讀取外部的配置檔案

Spring的Java配置方式和讀取外部的配置檔案

java配置時spring4.x推薦的配置方式,可以完全替代xml配置。

1、註解 @Configuration 和 @Bean

  spring的java配置方式是通過@Configuration和@Bean這兩個註解來實現的。

  @Configuration作用在類上,相當於一個xml配置檔案;@Bean作用在方法上,相當於xml配置中的<bean>

  UserServiceImpl

package com.oy.service.impl;

import com.oy.service.UserService;

public class UserServiceImpl implements
UserService { @Override public void getUser(Integer id) { System.out.println("id = " + id); } }

  JavaConfig

package com.oy;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.oy.service.UserService; import com.oy.service.impl.UserServiceImpl; @Configuration // 通過該註解來表明該類是一個spring的配置類,相當與一個xml檔案 //@ComponentScan(basePackages = {"com.oy.service.impl"}) // 配置掃描包 public class JavaConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }

  TestDemo

public class TestDemo {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = 
                new AnnotationConfigApplicationContext(JavaConfig.class);
        
        UserService userService = context.getBean(UserService.class);
        userService.getUser(111);
        
        context.close();
    }
}

2、讀取外部的配置檔案

  依賴

<!-- 連線池 -->
<dependency>
    <groupId>com.jolbox</groupId>
    <artifactId>bonecp-spring</artifactId>
    <version>0.8.0.RELEASE</version>
</dependency>

  資料庫連線資訊db.properties

db.url=jdbc:mysql://127.0.0.1:3306/security_test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
db.driverClassName=com.mysql.jdbc.Driver
db.username=root
db.password=

  DBConfig

package com.oy;

import javax.sql.DataSource;

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 com.jolbox.bonecp.BoneCPDataSource;

@Configuration
@PropertySource(value= {"classpath:db.properties", "xxx"},ignoreResourceNotFound=true)
public class DBConfig {

    @Value("${db.url}")
    private String url;
    @Value("${db.driverClassName}")
    private String driverClassName;
    @Value("${db.username}")
    private String username;
    @Value("${db.password}")
    private String password;
    
    @Bean(destroyMethod="close")
    public DataSource dataSource () {
        System.out.println("======url=" + url);
        BoneCPDataSource dataSource = new BoneCPDataSource();
        dataSource.setDriverClass(driverClassName);
        dataSource.setJdbcUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        // 檢查資料庫連線池中空閒連線的間隔時間,單位分,預設240,如果要取消設定為0
        dataSource.setIdleConnectionTestPeriodInMinutes(60);
        // 連線池中未使用的連線最大存活時間,單位分,預設60,如果要永遠存活設定為0
        dataSource.setIdleMaxAgeInMinutes(30);
        // 每個分割槽最大連線數
        dataSource.setMaxConnectionsPerPartition(100);
        // 每個分割槽最小連線數
        dataSource.setMinConnectionsPerPartition(5);
        return dataSource;
    }
}

  測試資料來源是否配置成功

public class TestDemo {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = 
                new AnnotationConfigApplicationContext(DBConfig.class);
        
        DataSource dataSource = context.getBean(DataSource.class);
        System.out.println(dataSource);
        
        context.close();
    }
}

==============以上使用的是javaConfig配置==============

==============xml配置參考==============

---