gpt4 book ai didi

spring - 如何以一种方法正确注入(inject) Spring Environment 而不是另一种方法?

转载 作者:行者123 更新时间:2023-12-04 21:45:54 24 4
gpt4 key购买 nike

neo4jDatabase()很好,但是 environmentgraphDatabaseService() 中始终为空...如何/为什么?

@Configuration
@PropertySource("classpath:/neo4j.properties")
@EnableNeo4jRepositories("reservation.repository.neo4j")
public class Neo4jConfig extends Neo4jConfiguration {

@Inject
Environment environment;

@Bean(initMethod = "setupDb")
public Neo4jDatabase neo4jDatabase() {
// Environment fine here...
return new Neo4jDatabase(this.environment.getProperty("data.file.path"));
}

@Bean(destroyMethod = "shutdown")
public GraphDatabaseService graphDatabaseService() {
if (environment == null) {
// Always gets here for some reason...why?
return new EmbeddedGraphDatabase("/Temp/neo4j/database");
} else {
return new EmbeddedGraphDatabase(this.environment.getProperty("database.path"));
}
}
}

版本:
Spring 3.2.0.RELEASE, Spring 数据-neo4j 2.1.0.RELEASE。

最佳答案

如果其他人遇到同样的问题 - 以下对我有用:

@Configuration
@PropertySource("classpath:neo4j.properties")
@EnableNeo4jRepositories(basePackages = "com.mydomain.neo4j.repo")
public class Neo4jConfig
{
@Autowired
Environment environment;

@Bean(name="graphDatabaseService", destroyMethod = "shutdown")
public GraphDatabaseService getGraphDatabaseService()
{
// any custom graph db initialization
return new EmbeddedGraphDatabase(this.environment.getProperty("database.path"));
}
}

注意:我没有扩展 Neo4jConfiguration。它只是调整成 Autowiring 依赖项的意大利面条,其中环境成员变量在初始化 graphDatabaseService 所需的时间从未设置。您可以使用 @PostConstruct 让它工作。但你最终会得到一堆 NotInTransactionException的。我没有时间深入研究原因 - 相反,在您的主 AppConfig 类中,您只需导入您的自定义 Neo4j 配置以及基本的抽象 Neo4j 配置类。本质上,您正在代码中执行 XML 配置将执行的操作。
@Configuration
@Import({Neo4jConfig.class, Neo4jConfiguration.class})
@ComponentScan(basePackages = {"com.mydomain"}, excludeFilters = @Filter({Controller.class, Configuration.class}))
public class MainConfig
{
// any other configuration you have
}

关于spring - 如何以一种方法正确注入(inject) Spring Environment 而不是另一种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14465882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com