我正在重写API的后端代码。它使用Glassfish来存储数据库URL,用户名,密码等。
我想使用更好的解决方案,以便我们可以轻松地更改Web服务器和数据库,而无需修改代码。
我的想法是在web.xml
内存储数据库信息(URL,用户名等),然后在baseDAO
内检索它们。
这是我的项目结构
RestAPI项目
商业项目
DAL项目
DTO项目
在我的DALProject中,我将创建此类
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;
}
}