我使用IntelliJ,Spring,Maven,Tomcat7和MongoDB
我有两个项目:
现在我在war项目中有以下bean配置:
<!-- Factory bean that creates the Mongo instance -->
<bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
<property name="host" value="localhost" />
</bean>
<!-- MongoTemplate for connecting and quering the documents in the database -->
<bean id="jwt" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongo" ref="mongo" />
<constructor-arg name="databaseName" value="ProjectDB" />
</bean>
<!-- Use this post processor to translate any MongoExceptions
thrown in @Repository annotated classes -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<!-- ########################################################################### -->
<!-- Configuration for auth -->
<!-- ########################################################################### -->
<!-- MongoTemplate for connecting and quering the documents in the database -->
<bean id="auth" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongo" ref="mongo" />
<constructor-arg name="databaseName" value="ProjectDB-auth" />
</bean>
我的WAR项目应使用ProjectDB并授权ProjectDB-auth
@Autowired private MongoTemplate jwt;
@Autowired private MongoTemplate auth;
这很好用,但我的JAR项目中还有一个mongoDB配置XML文件,它将被完全忽略(永远不会在我的应用程序上下文中导入)。
<!-- Factory bean that creates the Mongo instance -->
<bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
<property name="host" value="localhost" />
</bean>
<!-- MongoTemplate for connecting and quering the documents in the database -->
<bean id="test" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongo" ref="mongo" />
<constructor-arg name="databaseName" value="AuthDBBase-notInUse" />
</bean>
<!-- Use this post processor to translate any MongoExceptions
thrown in @Repository annotated classes -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
我需要删除此文件,但IntelliJ无法解析@Autowired private MongoTemplate auth;
我认为我的配置一切都有问题,尽管这可以正常工作。但是如何以正确的方式配置我的项目?
答案 0 :(得分:1)
我认为您的设置完全可以。
您希望创建一个供任何客户端使用的JAR,在本例中是您的WAR。您依赖于数据库。您可以通过省略JAR中的任何Spring配置来保持此依赖关系未声明。这不会很干净。此外,您的IDE会抱怨,因为它无法检查项目的有效性。
最好声明该依赖项,与范围为provided
的C或Maven依赖项中的头文件非常相似。像你一样将Spring配置添加到项目中。告诉您的库的用户要么将该配置包含在他们自己的配置中,要么将该配置用作文档,以查看哪些bean只需 来存在,即可使工件生效。