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

时间:2018-07-08 23:30:18

标签: java spring spring-boot

我是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?

2 个答案:

答案 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托管组件的通用构造型。