我是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;
}
}
在调用binarySearch方法时,预期输出为3,但是当我运行程序时,什么也没有输出。我在做什么错,如何将3输出到IntelliJ?
答案 0 :(得分:1)
使用Spring时,您使用的是Dependency Injection,因此您无需手动创建新实例,而应使用@Autowire
,根据您的描述,我看到您正在使用{{1} }在两个类中,仅在主类中使用,一个简单的解决方案是从public static void main(String[] args)...
中删除main
方法,如下所示:
BinarySearchImpl
答案 1 :(得分:1)
由于您使用的是Spring Boot
,因此该应用程序已经利用了Spring Framework
的许多功能。其中之一是,您不必显式创建Bean实例,因为它可以使用称为Inversion of Control (IoC)
的东西来管理该实例,也称为Dependency Injection (DI)
。有关here的更多信息。您应按以下方式修改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类具有@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托管组件的通用构造型。