MongoDB IntelliJ:如何从我的war项目配置自定义jar项目

时间:2014-07-06 07:45:57

标签: spring mongodb maven intellij-idea tomcat7

我使用IntelliJ,Spring,Maven,Tomcat7和MongoDB

我有两个项目:

  • JAR:这应该是一个身份验证服务
  • WAR:这将我的身份验证服务作为依赖

现在我在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

  • 我的WAR项目中的注入 - &gt; @Autowired private MongoTemplate jwt;
  • 在我的JAR项目中注入 - &gt; @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;

的依赖关系

我认为我的配置一切都有问题,尽管这可以正常工作。但是如何以正确的方式配置我的项目?

1 个答案:

答案 0 :(得分:1)

我认为您的设置完全可以。

您希望创建一个供任何客户端使用的JAR,在本例中是您的WAR。您依赖于数据库。您可以通过省略JAR中的任何Spring配置来保持此依赖关系未声明。这不会很干净。此外,您的IDE会抱怨,因为它无法检查项目的有效性。

最好声明该依赖项,与范围为provided的C或Maven依赖项中的头文件非常相似。像你一样将Spring配置添加到项目中。告诉您的库的用户要么将该配置包含在他们自己的配置中,要么将该配置用作文档,以查看哪些bean只需 来存在,即可使工件生效。