Java Spring启动应用程序终止,退出代码为1
我是Java新手,启动了一个Spring应用程序。但是,当我在另一个类中实例化一个类并运行一个方法时,该方法不会输出 调用该方法的类是SpringIn5StepsApplication.java,它看起来像: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
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
调用,您就会得到完全相同的行为。