Spring 引导应用程序以退出代码 1 终止



我是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);
}
}

BinarySearchImpl 类如下所示:

package com.example.springin5steps;
public class BinarySearchImpl {
public static void main(String[] args) {
}
public int binarySearch(int[] numbers, int numberToSearchFor) {
return 3;
}
}

调用二进制搜索方法时,预期输出为 3,但在运行程序时不输出任何内容。我做错了什么,如何让 3 输出到 IntelliJ?

由于您使用的是Spring Boot,应用程序已经利用了Spring Framework的许多功能。其中之一是您不必显式创建 bean 的实例,因为它使用称为Inversion of Control (IoC)的东西来管理它,该实例通常也称为Dependency Injection (DI).这里有更多关于这方面的信息。您应该按如下方式修改主方法 -

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 类具有如下@Component注释 -

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时,你使用的是依赖注入,所以你不需要手动创建新实例,而是应该使用@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;
}
}

最新更新