Java - DAL 项目中的数据库 URL

Java - Database URL within the DAL project

我正在重写一个API的后端代码。它使用 Glassfish 存储数据库 URL、用户名、密码...

我想使用更好的解决方案,这样我们就可以在不修改代码的情况下轻松更改我们的 Web 服务器和数据库。

我的想法是将数据库信息(url、用户名、..)存储在 web.xml 中,并在 baseDAO.

中检索它们

这是我的项目结构

在我的 DALProject 中,我将创建这个 class

public class BaseDAO {

    public Connection getConnection() {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/DB";
        String name = "root";
        String password = "";

        Connection con = DriverManager.getConnection(url, name, password);
        return con;
    }
}

public class UserDAO extends BaseDAO {

    public User getAll() {
        Connection con = getConnection();
        ...
    }
}

如何存储这些数据库的信息?使其模块化的最佳做法是什么?我需要随时轻松更改数据库。

最好的办法是保存在application.properties文件中,需要的时候再改:

# Details for datasource
application.db.driver = com.mysql.jdbc.Driver
application.db.url = jdbc:mysql://localhost:3306/DB
application.db.username = root
application.db.password = 

然后你就可以在你的配置bean中使用它了:

@Configuration
@PropertySource("application.properties")
public class DataConfig {
    @Autowired
    private Environment env;

    @Bean
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName(env.getProperty("application.db.driver"));
        dataSource.setUrl(env.getProperty("application.db.url"));
        dataSource.setUsername(env.getProperty("application.db.username"));
        dataSource.setPassword(env.getProperty("application.db.password"));
        return dataSource;
    }
}