java - starter - ¿Cómo funciona una aplicación basada en la consola Spring Boot?
spring boot starter web (1)
Deberías tener un cargador estándar:
@SpringBootApplication
public class MyDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MyDemoApplication.class, args);
}
}
e implementar una interfaz CommandLineRunner
con anotación @Component
@Component
public class MyRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
}
}
@EnableAutoConfiguration
hará la magia habitual de SpringBoot.
ACTUALIZAR:
Como @jeton sugiere que los otros Springboot implemente una escalera:
spring.main.web-environment=false
spring.main.banner-mode=off
Si estoy desarrollando una aplicación bastante simple basada en la consola Spring Boot, no estoy seguro de la ubicación del código de ejecución principal. ¿Debo colocarlo en el método public static void main(String[] args)
, o hacer que la clase de aplicación principal implemente la interfaz CommandLineRunner
y coloque el código en el método run(String... args)
?
Usaré un ejemplo como contexto. Digamos que tengo la siguiente aplicación [rudimentaria] ( codificada en interfaces, estilo 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 (interfaz)
public interface GreeterService {
String greet(String[] tokens);
}
GreeterServiceImpl.java (clase de implementación)
@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;
}
}
La versión Spring Boot equivalente de Application.java
sería algo similar a lo siguiente : GreeterServiceImpl.java (clase de implementación)
@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?
}
}