Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring引导中加载子模块上下文_Java_Spring Boot - Fatal编程技术网

Java 在spring引导中加载子模块上下文

Java 在spring引导中加载子模块上下文,java,spring-boot,Java,Spring Boot,我在访问spring boot的服务时遇到一些问题。我有两个项目叫做“父项目”,第二个是子项目。子项目作为模块项目添加到父项目中。所以问题是,当我尝试访问父项目时,它工作正常,但当我尝试访问子项目服务时,它会给我错误 白标错误页 此应用程序没有针对/error的显式映射,因此您将其视为回退。Wed Apr 13 22:29:30 PKT 2016 出现意外错误(类型=未找到,状态=404)。 没有可用的消息 下面是两个项目的代码 父项目 Example.java package com.pos.

我在访问spring boot的服务时遇到一些问题。我有两个项目叫做“父项目”,第二个是子项目。子项目作为模块项目添加到父项目中。所以问题是,当我尝试访问父项目时,它工作正常,但当我尝试访问子项目服务时,它会给我错误

白标错误页 此应用程序没有针对/error的显式映射,因此您将其视为回退。Wed Apr 13 22:29:30 PKT 2016 出现意外错误(类型=未找到,状态=404)。 没有可用的消息

下面是两个项目的代码 父项目

Example.java

package com.pos.dashboard.backend;
@RequestMapping("/test/**")
@RestController
public class Example {

    @RequestMapping(method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
    public String index() {
        return "Hello World";
    }
    package com.pos.dashboard.backend;
    @Configuration
    @ComponentScan
    @EnableAutoConfiguration
    public class HelloWorldApplication {

        public static void main(String[] args) {
            SpringApplication.run(HelloWorldApplication.class, args);
        }
package com.jira.pos.widget;
@RequestMapping("/tester/**")
@RestController
public class Example {

    @RequestMapping(method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
    public String index() {
        return "Hello World";
    }
HelloWorldApplication.java

package com.pos.dashboard.backend;
@RequestMapping("/test/**")
@RestController
public class Example {

    @RequestMapping(method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
    public String index() {
        return "Hello World";
    }
    package com.pos.dashboard.backend;
    @Configuration
    @ComponentScan
    @EnableAutoConfiguration
    public class HelloWorldApplication {

        public static void main(String[] args) {
            SpringApplication.run(HelloWorldApplication.class, args);
        }
package com.jira.pos.widget;
@RequestMapping("/tester/**")
@RestController
public class Example {

    @RequestMapping(method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
    public String index() {
        return "Hello World";
    }
Pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>dashboard</groupId>
    <artifactId>com.pos.interfaces</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
        <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.1.RELEASE</version>
    </parent>

<properties>
    <!-- The main class to start by executing java -jar -->
    <start-class>com.pos.dashboard.backend.HelloWorldApplication</start-class>
    </properties>

<dependencies>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>


</dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin> 
    </plugins>
    </build>
    <modules>
        <module>jira-widget-app</module>
    </modules>
</project>
  package com.jira.pos.widget;
    @Configuration
    @ComponentScan
    @EnableAutoConfiguration
    public class HelloWorldApplication1 {

        public static void main(String[] args) {
            SpringApplication.run(HelloWorldApplication1.class, args);
        }   
HelloWorldApplication1.java

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>dashboard</groupId>
    <artifactId>com.pos.interfaces</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
        <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.1.RELEASE</version>
    </parent>

<properties>
    <!-- The main class to start by executing java -jar -->
    <start-class>com.pos.dashboard.backend.HelloWorldApplication</start-class>
    </properties>

<dependencies>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>


</dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin> 
    </plugins>
    </build>
    <modules>
        <module>jira-widget-app</module>
    </modules>
</project>
  package com.jira.pos.widget;
    @Configuration
    @ComponentScan
    @EnableAutoConfiguration
    public class HelloWorldApplication1 {

        public static void main(String[] args) {
            SpringApplication.run(HelloWorldApplication1.class, args);
        }   
Pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>dashboard</groupId>
    <artifactId>com.pos.interfaces</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>jira-widget-app</artifactId>
  <packaging>jar</packaging>

  <properties>
    <!-- The main class to start by executing java -jar -->
    <start-class>com.jira.pos.widget.HelloWorldApplication1</start-class>
    </properties>
</project>

4.0.0
仪表板
它在浏览器上向我返回Hello World

但是,当我尝试访问 it白标错误页面 此应用程序没有/error的显式映射,因此您将其视为回退。 2016年4月13日星期三22:37:17北京时间 出现意外错误(类型=未找到,状态=404)。
没有可用的消息

父项目扫描当前包及其子包中的Springbeans。这是您的案例
com.pos.dashboard.backend

您有两个选项(应该只需要其中一个):

  • 将子项目的根包更改为类似于
    com.pos.dashboard.backend.child的内容,以便父JAR模块扫描它
  • 将子模块中的包包括到父组件扫描中:

    package com.pos.dashboard.backend;
    @Configuration
    @ComponentScan({"com.pos.dashboard.backend", "com.jira.pos.widget"})
    @EnableAutoConfiguration
    public class HelloWorldApplication {
    
  • 顺便说一句,如果未将子
    @EnableAutoConfiguration
    用作独立的Spring引导应用程序,则它是冗余的

    对评论的反应:

    哦,我也错过了你们并没有子项目作为父项目的Maven依赖项。Maven多模块项目为每个模块创建JAR。在您的例子中,您有父模块(同时也是多模块Maven父模块)和子模块

    我建议创建第三个Maven pom,完全用于多模块设置,并有两个模块(您的父项目和子项目)。当然,您需要将子项目和maven依赖项包含到父项目中


    您能包括软件包吗?软件包已添加到代码中。谢谢您的回复。我根据您的建议进行了更改1)更改子模块包com.pos.dashboard.backend.child 2)在父模块中添加以下包作为组件扫描,但仍然没有成功..'@Configuration@ComponentScan({“com.pos.dashboard.backend”,“com.pos.dashboard.backend.child”})@EnableAutoConfiguration public class HelloWorldApplication{public static void main(String[]args){SpringApplication.run(HelloWorldApplication.class,args);}很抱歉,我的答案可能让人困惑。只需要一个选项。不需要两个。如果您更改了子模块中的所有包(选项1),
    @ComponentScan
    属性应该是不必要的(选项2)。对此很抱歉。我坚持使用第二个选项,但仍然使用localhost:8080/api工作,但不工作。我可以向您发送代码吗?它只有四个类OK更正我的错误,到目前为止,我有两个项目子项目(jira widget app)父项目(pos接口仪表板)父项依赖子项,如jira小部件应用程序pom,因此您希望我创建另一个项目,该项目将依赖父项项目(pos接口仪表板),比如称为主应用程序的新项目,然后它将具有pos接口仪表板或pos接口仪表板jira小部件应用程序