重构application.properties以编程方式使用数据源

时间:2017-04-24 12:18:30

标签: postgresql spring-boot datasource

我有一个示例弹簧启动应用程序。我正在使用PostgreSQL DB。我是春天,春天启动等世界的新手

示例应用程序执行CRUD操作。我使用的是Java8和intelliJ IDEA。

我的application.properties包含以下内容: -

spring.profiles.active=local

虽然我在application-local.properties中有以下内容: -

spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=postgres123


spring.datasource.initial-size=5
spring.datasource.max-active=10
spring.datasource.max-idle=5
spring.datasource.min-idle=2

很明显,我的application.properties也有一些连接池。

我的项目结构恰好如下: -

enter image description here

从项目结构中可以看出,我有一个模型文件夹,当然包含employee表的类。 我有一个DAO,它有一个由处理员工相关数据的方法组成的类。 我有一个服务层,由EmployeeSerive类组成。它有

@Autowired
EmployeeDao employeeDao;

因此DAO方法在服务中实现。

我需要移动我在application.properties

中的任何内容

我认为最好的方法是以编程方式配置数据源: -

我的Application.java类看起来像这样: -

@SpringBootApplication
@PropertySource("application-${spring.profiles.active}.properties")
public class Application implements CommandLineRunner {
@Autowired
DataSource dataSource;
private static final Logger logger = 
LoggerFactory.getLogger(Application.class);

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    logger.info("-------Message at INFO level from Application.main()-------
");

}

@Override
public void run(String... args) throws Exception {

    logger.info("-------Message at INFO level from Application.run()-------
");
    logger.info(String.valueOf(dataSource));

}
}

为了配置bean,我应该在Application.java类中引入类似下面的内容: -

@Bean
public DataSource dataSource() {
    return DataSourceBuilder
            .create()
            .username("")
            .password("")
            .url("")
            .driverClassName("")
            .build();
}

在上面的代码片段中,我将传递application.properties文件中可用的任何内容。

我关注以下链接: -

Configure DataSource programmatically in Spring Boot

我是否需要在我的应用程序中引入其他类,可能在DAO中使用上述内容。

或者只是介绍上述内容就足够了。 我应该怎么做连接池的东西?

提前致谢!

0 个答案:

没有答案