I have two profiles in Spring: first
and second
. If I use the first
profile, I want to create a datasource based on postgres, but if I use second
I don't want any datasource created at all. I've defined my JpaEntityConfig
class as:
@Configuration
@ConfigurationProperties()
public class JpaEntityConfig {
@Autowired
DataSource dataSource;
public DataSource dataSource() {
return dataSource;
}
...
}
if I set spring.profiles.active=first
then it works fine, however if I set it to spring.profiles.active=second
then I'm getting the following error:
Field dataSource in com.package.JpaEntityConfig required a bean of type 'javax.sql.DataSource' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'javax.sql.DataSource' in your configuration.
how can I get around this?
CodePudding user response:
As JpaEntityConfig is expecting a DataSource you can make this optional if you so wish
@Configuration
@ConfigurationProperties()
public class JpaEntityConfig {
@Autowired(required = false)
DataSource dataSource;
CodePudding user response:
@Configuration
@ConfigurationProperties()
@Profile("!second")
public class JpaEntityConfig {
@Autowired
DataSource dataSource;
public DataSource dataSource() {
return dataSource;
}
...
}
You can skip this jpa configuration when profile second
is active as above.