Method 1: Using @Value for Property Injection
Step 1: Define a properties file (e.g., jdbc.properties)
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/leyou
jdbc.username=root
jdbc.password=123456
Step 2: Create a configuration class using @Value
package com.caicia.config;
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;
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@Value("${jdbc.url}")
private String dbUrl;
@Value("${jdbc.driverClassName}")
private String driverClass;
@Value("${jdbc.username}")
private String dbUser;
@Value("${jdbc.password}")
private String dbPass;
@Bean
public DataSource dataSource() {
DruidDataSource source = new DruidDataSource();
source.setDriverClassName(driverClass);
source.setUrl(dbUrl);
source.setUsername(dbUser);
source.setPassword(dbPass);
return source;
}
}
Method 2: Using @ConfigurationProperties with a POJO
Step 1: Add database settings to application.properties
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/leyou
jdbc.username=root
jdbc.password=123456
Step 2: Define a properties holder class
package com.caicia.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Data
@ConfigurationProperties(prefix = "jdbc")
public class DatabaseProperties {
private String url;
private String driverClassName;
private String username;
private String password;
}
Step 3: Cnofigure the data source bean
package com.caicia.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
@EnableConfigurationProperties(DatabaseProperties.class)
public class JdbcConfig {
@Bean
public DataSource dataSource(DatabaseProperties props) {
DruidDataSource source = new DruidDataSource();
source.setDriverClassName(props.getDriverClassName());
source.setUrl(props.getUrl());
source.setUsername(props.getUsername());
source.setPassword(props.getPassword());
return source;
}
}
Method 3: Direct @ConfigurationProperties on DataSource Bean
Step 1: Use application.properties as before
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/leyou
jdbc.username=root
jdbc.password=123456
Step 2: Simplified configuration class
package com.caicia.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class JdbcConfig {
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
return new DruidDataSource();
}
}