Java Spring启动应用程序终止,退出代码为1

Java Spring启动应用程序终止,退出代码为1,java,spring,spring-boot,Java,Spring,Spring Boot,我是Java新手,启动了一个Spring应用程序。但是,当我在另一个类中实例化一个类并运行一个方法时,该方法不会输出 调用该方法的类是SpringIn5StepsApplication.java,它看起来像: package com.example.springin5steps; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootA

我是Java新手,启动了一个Spring应用程序。但是,当我在另一个类中实例化一个类并运行一个方法时,该方法不会输出

调用该方法的类是SpringIn5StepsApplication.java,它看起来像:

package com.example.springin5steps;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringIn5StepsApplication {

    public static void main(String[] args) {

        BinarySearchImpl binarySearch = new BinarySearchImpl();
        int result = binarySearch.binarySearch(new int[] {12, 4, 6}, 3);

        System.out.println(result);

        SpringApplication.run(SpringIn5StepsApplication.class, args);
    }
}
package com.example.springin5steps;

public class BinarySearchImpl {
    public static void main(String[] args) {

    }
    public int binarySearch(int[] numbers, int numberToSearchFor) {
        return 3;
    }
}
BinarySearchImpl类如下所示:

package com.example.springin5steps;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringIn5StepsApplication {

    public static void main(String[] args) {

        BinarySearchImpl binarySearch = new BinarySearchImpl();
        int result = binarySearch.binarySearch(new int[] {12, 4, 6}, 3);

        System.out.println(result);

        SpringApplication.run(SpringIn5StepsApplication.class, args);
    }
}
package com.example.springin5steps;

public class BinarySearchImpl {
    public static void main(String[] args) {

    }
    public int binarySearch(int[] numbers, int numberToSearchFor) {
        return 3;
    }
}

在调用binarySearch方法时,预期的输出是3,但在运行程序时没有输出任何内容。我做错了什么?如何将3输出到IntelliJ?

当您使用Spring时,您使用的是依赖项注入,因此您不需要手动创建新实例,而应该使用
@Autowire
,根据您的描述,我看到您使用的是
公共静态void main(String[]args)…
在这两个类中,这只在主类中使用,一个简单的解决方案是从
BinarySearchImpl
中删除
main
方法,如下所示:

package com.example.springin5steps;

public class BinarySearchImpl {
    public int binarySearch(int[] numbers, int numberToSearchFor) {
        return 3;
    }
}

当您使用Spring时,您使用的是依赖项注入,因此您不需要手动创建新实例,而是应该使用
@Autowire
,根据您的描述,我看到您在两个类中都使用了
public static void main(String[]args).
这只在主类中使用,一个简单的解决方案是从
BinarySearchImpl
中删除
main
方法,如下所示:

package com.example.springin5steps;

public class BinarySearchImpl {
    public int binarySearch(int[] numbers, int numberToSearchFor) {
        return 3;
    }
}

由于您使用的是
Spring引导
,因此应用程序已经利用了
Spring框架
的许多功能。其中之一是,您不必显式地创建bean实例,因为它使用称为
inversionofcontrol(IoC)
的东西来管理bean,这也是更常见的
依赖注入(DI)
。这方面还有更多的信息。您应该修改main方法,如下所示-

package com.example.springin5steps;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringIn5StepsApplication {
    public static void main(String[] args) {
        ApplicationContext applicationContext = SpringApplication.run(SpringIn5StepsApplication.class, args);

        BinarySearchImpl binarySearch = applicationContext.getBean(BinarySearchImpl.class);
        int result = binarySearch.binarySearch(new int[] { 12, 4, 6 }, 3);
        System.out.println(result);
    }
}
另外,请确保BinarySearchImpl类具有如下所示的
@组件
注释-

package com.example.springin5steps;

import org.springframework.stereotype.Component;

@Component
public class BinarySearchImpl {
    public int binarySearch(int[] numbers, int numberToSearchFor) {
        return 3;
    }
}

@Component
是任何Spring托管组件的通用原型。

由于您使用的是
Spring Boot
,应用程序已经利用了
Spring框架的许多功能。其中之一是,您不必显式地创建bean实例,因为它使用称为
inversionofcontrol(IoC)
的东西来管理bean,这也是更常见的
依赖注入(DI)
。这方面还有更多的信息。您应该修改main方法,如下所示-

package com.example.springin5steps;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringIn5StepsApplication {
    public static void main(String[] args) {
        ApplicationContext applicationContext = SpringApplication.run(SpringIn5StepsApplication.class, args);

        BinarySearchImpl binarySearch = applicationContext.getBean(BinarySearchImpl.class);
        int result = binarySearch.binarySearch(new int[] { 12, 4, 6 }, 3);
        System.out.println(result);
    }
}
另外,请确保BinarySearchImpl类具有如下所示的
@组件
注释-

package com.example.springin5steps;

import org.springframework.stereotype.Component;

@Component
public class BinarySearchImpl {
    public int binarySearch(int[] numbers, int numberToSearchFor) {
        return 3;
    }
}

@Component
是任何Spring管理组件的通用原型。

使用记录器(log4j)和@autowire将实例连接到主类中您是否遇到任何异常?或者您的spring启动应用程序正在成功启动@用户当它运行时没有错误,但它只是输出:“进程结束,退出代码为0”。这很奇怪,因为我正在观看一个视频教程,它在哪里工作?为什么在世界上,启动涉及这里?只需取消
run
调用,您将得到完全相同的行为。使用记录器(log4j)和@autowire将实例连接到主类中,您是否遇到任何异常?或者您的spring启动应用程序正在成功启动@用户当它运行时没有错误,但它只是输出:“进程结束,退出代码为0”。这很奇怪,因为我正在观看一个视频教程,它在哪里工作?为什么在世界上,启动涉及这里?只要放弃
run
调用,您就会得到完全相同的行为。