我将数据库配置放在配置类中:
@Configuration
@ComponentScan("com.ambre.pta")
@EnableTransactionManagement
@PropertySources({
@PropertySource("classpath:fr/referentiel.properties")
})
public class ApplicationContextConfig {
@Autowired
private Environment env;
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean(name = "viewResolver")
public InternalResourceViewResolver getViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean(name = "dataSource")
public DataSource getDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
dataSource.setUrl("jdbc:oracle:thin:@192.168.1.123:1521:xe");
dataSource.setUsername("pta");
dataSource.setPassword("pta");
return dataSource;
}
...
}
问题在于,每次将项目交付给不同的客户时,开发人员都必须修改这些配置并重建项目,最后重新生成war文件。
那么是否有简单的程序来更改数据库配置而无需重建或重新生成war文件?
答案 0 :(得分:0)
您可以将数据库配置移动到外部属性中。
添加类似这样的内容
25.2.0
然后当您运行应用程序时,只需添加此参数(注意'文件:'前缀)
@PropertySources({
@PropertySource("classpath:fr/referentiel.properties")
@PropertySource("${db.properties}")
})
您可以像这样访问配置中的数据库属性
-Ddb.properties=file:/path-to.properties
或@Autowired
private Environment env;
...
dataSource.setDriverClassName(env.getProperty("db.driver"));
dataSource.setUrl(env.getProperty("db.url"));
dataSource.setUsername(env.getProperty("db.username"));
dataSource.setPassword(env.getProperty("db.password"));
注释,例如
@Value
属性文件@Value("${db.driver}")
private String dbDriver;
应该只是一个常规属性文件。所以
path-to.properties
答案 1 :(得分:0)
我建议您使用提供开箱即用模板项目的Spring启动。此外,在Spring启动应用程序中设置数据库连接非常简单。这是我到目前为止使用的两种方式。
如果你想要一个内存数据库,你可以在你的pom.xml文件中包含H2 / HSQLDB / DERBY依赖项,你就可以了。 Spring启动会在您的pom中看到这些依赖项,并为您创建一个开箱即用的数据源。这些数据库的一个缺点是它们不提供持久存储。
如果你想要一个持久存储,比如PostgreSQL,你可以在pom.xml文件中包含依赖项,并在/ src / main / resources文件夹中维护一个application.properties文件。
例如,如果您在端口var myArray1 = [1,2,3]
var myArray2 = null
var arrays = [myArray1, myArray2]
var oneNotEmpty = arrays.some( a => typeof a != "undefined" && a != null && a.length > 0)
console.log("At least one array non-empty?", oneNotEmpty)
上的本地计算机上运行了postgresql数据库track-courier
,则此文件的内容将如下所示
5432
您不需要在配置类中手动创建任何数据源bean。弹簧靴启动开箱即用。您可以查看this链接以供参考。
答案 2 :(得分:0)
您可以使用数据源连接到数据库。 下面是使用数据源连接数据库的示例代码。
@Bean
public DataSource dataSource_aw_es() {
DataSource dataSource = null;
Context ctx = null;
try {
ctx = new InitialContext();
dataSource = (DataSource) ctx.lookup("java:/comp/env/jdbc/DataSourcename");
} catch (NamingException e) {
}
return dataSource;
}
您只需在服务器中配置数据源即可。 最重要的是,无需共享数据库凭据即可连接到数据库。
下面是服务器上数据源的配置。(下面是Tomcat服务器的配置。我们需要在tomcat服务器的context.xml中配置下面的代码片段。)
<Resource name="jdbc/DataSourceName" auth="Container" type="javax.sql.DataSource"
maxActive="-1" maxIdle="-1" maxWait="-1"
username="user" password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://IP_DB:7011/Schema_name"/>