Spring @Configuration Beans - '最佳'位置?

时间:2012-02-15 16:13:59

标签: spring

将@Configuration bean放在一个Spring项目中的“最佳实践”位置在哪里?

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

2 个答案:

答案 0 :(得分:2)

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

但最好在java项目中使用包。 - 包映射到目录。

因此,最好的做法是拥有像com.my_domain.my_application.service这样的软件包 这将对应于文件夹/src/main/java/com/my_domain/my_application/service


@Configuration带注释的类是java类,因此必须编译它们。 在默认的mavern项目中,只有/src/main/java/src/test/java中的文件。如果你想分开@Configuration类,那么这是可能的,但不能在src/xxx/resource文件夹中。

您唯一需要做的就是在maven build helper plugin的帮助下在maven中对其他源代码进行decalare。

  <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源文件夹/src/main/javaconfig,你可以在其中放置@Configuration个文件。在编译之前,此文件夹中的内容将与/src/main/java中的内容合并。 (将此添加到pom之后,您需要指示eclipse更新项目配置)。

答案 1 :(得分: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中,而在项目源代码树中,这些将被放置在其他位置。