2012-02-15 81 views
4

将@Configuration bean放在Spring项目中的'最佳实践'地方在哪里?这似乎是错误的配置下/src/main/java,但否则类将不会被编译。Spring @Configuration Beans - '最佳'地点?

其他人如何解决这个问题?

+0

为什么它错了?这些只是最终的类... – 2012-02-15 16:21:30

+0

他们是,但他们是配置,而不是我认为应用程序适当。也许我只是对他们应该属于的地方有一个歪曲的看法! – 2012-02-16 09:01:29

+0

(+1)@TheOter读者:“看到我的答案下面的第一条评论,然后你会明白这个问题:CITE”我想知道具体关于@Configuration bean的信息。通常情况下,我希望配置资源位于src/main/resources中,但由于“@ Configuration”bean需要以编译类结束,所以这不起作用。 “ – Ralph 2012-02-16 09:51:13

回答

2

看来,唯一的解决办法,如果你想从逻辑中分离出的配置,是额外的源文件夹添加到Maven的配置:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.1</version> 
     <executions> 
      <execution> 
      <id>add-source</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>add-source</goal> 
      </goals> 
      <configuration> 
       <sources> 
       <source>src/main/configuration</source> 
       ... 
       </sources> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

看来,这个解决方案将实现你想要的。 src/main/configuration将被添加到编译插件中,并将在target/classes中结束,而在项目源代码树中,这些将被放置在其他位置。

2

/src/main/java是maven项目中java源码的根文件夹。 所以它是正确的根文件夹。

但是最好的做法是在java项目中使用包。 - 包被映射到目录。

所以这是很常见的一个最佳实践有一定的包像com.my_domain.my_application.service ,这将对应的文件夹/src/main/java/com/my_domain/my_application/service


@Configuration注释类是Java类,并therfore他们必须进行编译。 在默认的mavern项目中,只有/src/main/java/src/test/java中的文件。如果要分开@Configuration类,则可以这样做,但不能在src/xxx/resource文件夹中。

你需要做的唯一的事情就是在maven build helper plugin的帮助下在maven中绘制一个额外的源代码direcory。

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
      <execution> 
      <id>add-source</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <source>add-source</source> 
      </goals> 
      <configuration> 
       <sources> 
       <source>${basedir}/src/main/javaconfig</source> 
       </sources> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 

现在你哈瓦一个额外的java源文件夹,你可以把你@Configuration文件。在编译之前,此文件夹中的内容与/src/main/java合并。 (添加到pom后,你需要指示eclipse来更新项目配置)。

+0

感谢您的回答,我想知道关于@Configuration bean的具体信息,通常我会希望配置资源位于src/main /资源“,但作为@Configuration bean需要最终编译类,这是行不通的。是否有一个普遍接受的地方把需要编译的配置元素? – 2012-02-16 09:00:53

+0

@Deejay:现在我明白了这个问题,有看看我的扩展答案。 – Ralph 2012-02-16 09:48:58