gpt4 book ai didi

java - 基于 Spring Boot 控制台的应用程序如何工作?

转载 作者:IT老高 更新时间:2023-10-28 20:50:02 24 4
gpt4 key购买 nike

如果我正在开发一个相当简单的基于 Spring Boot 控制台的应用程序,我不确定主要执行代码的位置。我应该将它放在 public static void main(String[] args) 方法中,还是让主应用程序类实现 CommandLineRunner 接口(interface)并将代码放在 run(String... args) 方法中?

我将使用一个示例作为上下文。假设我有以下 [基本] 应用程序(编码为接口(interface),Spring 风格):

Application.java

public class Application {

@Autowired
private GreeterService greeterService;

public static void main(String[] args) {
// ******
// *** Where do I place the following line of code
// *** in a Spring Boot version of this application?
// ******
System.out.println(greeterService.greet(args));
}
}

GreeterService.java(接口(interface))

public interface GreeterService {
String greet(String[] tokens);
}

GreeterServiceImpl.java(实现类)

@Service
public class GreeterServiceImpl implements GreeterService {
public String greet(String[] tokens) {

String defaultMessage = "hello world";

if (args == null || args.length == 0) {
return defaultMessage;
}

StringBuilder message = new StringBuilder();
for (String token : tokens) {
if (token == null) continue;
message.append(token).append('-');
}

return message.length() > 0 ? message.toString() : defaultMessage;
}
}

Application.java 的等效 Spring Boot 版本大致如下:GreeterServiceImpl.java(实现类)

@EnableAutoConfiguration
public class Application
// *** Should I bother to implement this interface for this simple app?
implements CommandLineRunner {

@Autowired
private GreeterService greeterService;

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
System.out.println(greeterService.greet(args)); // here?
}

// Only if I implement the CommandLineRunner interface...
public void run(String... args) throws Exception {
System.out.println(greeterService.greet(args)); // or here?
}
}

最佳答案

你应该有一个标准的加载器:

@SpringBootApplication
public class MyDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MyDemoApplication.class, args);
}
}

并使用@Component注解实现一个CommandLineRunner接口(interface)

    @Component
public class MyRunner implements CommandLineRunner {

@Override
public void run(String... args) throws Exception {

}
}

@EnableAutoConfiguration 将执行通常的 SpringBoot 魔法。

更新:

正如@jeton 建议的那样,最新的 Springboot 实现了一个直:

spring.main.web-application-type=none
spring.main.banner-mode=off

docs at 72.2

关于java - 基于 Spring Boot 控制台的应用程序如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28199999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com