Ich habe ein Projekt-Setup mit Spring Boot 0.5.0.M5.Spring Boot - Umgebung @Autowired wirft NullPointerException
In einer der Konfigurationsdateien versuche ich @Autowire Environment
, aber das schlägt mit einem NullPointerException
.
Hier ist, was ich bisher:
Application.java
JpaConfig.java wo ich @Autowire Environment
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.ui.persistence.repository")
public class JpaConfig {
private static final String DATABASE_DRIVER = "db.driver";
private static final String DATABASE_PASSWORD = "db.password";
private static final String DATABASE_URL = "db.url";
private static final String DATABASE_USERNAME = "db.username";
private static final String HIBERNATE_DIALECT = "hibernate.dialect";
private static final String HIBERNATE_SHOW_SQL = "hibernate.show_sql";
private static final String ENTITYMANAGER_PACKAGES_TO_SCAN
= "entitymanager.packages.to.scan";
@Autowired
private Environment env;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getProperty(DATABASE_DRIVER));
dataSource.setUrl(env.getProperty(DATABASE_URL));
dataSource.setUsername(env.getProperty(DATABASE_USERNAME));
dataSource.setPassword(env.getProperty(DATABASE_PASSWORD));
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean
= new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean.setPersistenceProviderClass(
HibernatePersistence.class);
entityManagerFactoryBean.setPackagesToScan(
env.getProperty(ENTITYMANAGER_PACKAGES_TO_SCAN));
entityManagerFactoryBean.setJpaProperties(hibernateProperties());
return entityManagerFactoryBean;
}
}
Ich lade ich versuche, ich versuche zu die Datenbankeigenschaften, die in einer Eigenschaftendatei konfiguriert sind. Die Environment
wird jedoch nicht injiziert und der Code schlägt mit NullPointerException
fehl. Ich habe keine Konfiguration in XML-Dateien.
Für die Eigenschaftendatei I PropertySourcesPlaceholderConfigurer
so konfiguriert haben:
@Configuration
@PropertySource("classpath:database.properties")
public class PropertyConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceHolderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
ich @Autowired
Swapping haben versucht, @Resource
und @Inject
aber nichts hat bisher funktioniert. Würde mich über jede Hilfe freuen. Vielen Dank.
Können Sie den Stack-Trace zeigen? Gibt es irgendetwas, das die "Umgebung" bereitstellt? Ich denke, dass Sie eine Klasse brauchen, die eine Methode hat, die eine zurückgibt, die mit '@ Bean' markiert ist. Sie können auch '@ Value' verwenden, um Ihre Eigenschaften festzulegen, anstatt eine Umgebung zu erhalten und sie auf diese Weise zu erhalten. – CodeChimp
Ich habe es mit @Value versucht, hat nicht funktioniert. Die Stack-Ablaufverfolgung ist nur NullPointerException, da die Variablen nicht festgelegt wurden. Vielen Dank. – imme