I have to convert a large Spring boot application into a flexible CLI tool, where the requests sent by the Spring boot application (among other things) are determined by user input at the command line. I decided to use picocli to implement the command line functionality, however I can't figure out how to even do something as simple as print some text to stdout if the user passes a given option flag, Spring boot just runs as it normally does. How am I supposed to write this so picocli can function alongside Spring boot (and eventually control all the Spring boot stuff)
Getting Picocli to work with Springboot application
4.3k Views Asked by Guilty At
2
There are 2 best solutions below
0
Galen Howlett
On
Spring Boot is supported by PicoCLI and they even have an example to follow: https://picocli.info/#_spring_boot_example
Related Questions in JAVA
- How to store data related to a Blazor Server circuit?
- MatTooltip not working with MatAutocompleteList in Blazor
- Blazor - Prevent double HTTP call and wait first one
- Blazor Webassembly Authentication is verry slow
- Blazor WASM Hosted - How to download a file using HttpPost
- How do I set my RadzenTextBox to String.Empty if a toggle is clicked
- Blazor clear memory with IDisposable
- CascadedParameter: When is its value applied to my components property
- Blazor child to parent two-way binding on input-text field
- How to apply signalR.js in a Screen sharing html page
Related Questions in SPRING
- How to store data related to a Blazor Server circuit?
- MatTooltip not working with MatAutocompleteList in Blazor
- Blazor - Prevent double HTTP call and wait first one
- Blazor Webassembly Authentication is verry slow
- Blazor WASM Hosted - How to download a file using HttpPost
- How do I set my RadzenTextBox to String.Empty if a toggle is clicked
- Blazor clear memory with IDisposable
- CascadedParameter: When is its value applied to my components property
- Blazor child to parent two-way binding on input-text field
- How to apply signalR.js in a Screen sharing html page
Related Questions in SPRING-BOOT
- How to store data related to a Blazor Server circuit?
- MatTooltip not working with MatAutocompleteList in Blazor
- Blazor - Prevent double HTTP call and wait first one
- Blazor Webassembly Authentication is verry slow
- Blazor WASM Hosted - How to download a file using HttpPost
- How do I set my RadzenTextBox to String.Empty if a toggle is clicked
- Blazor clear memory with IDisposable
- CascadedParameter: When is its value applied to my components property
- Blazor child to parent two-way binding on input-text field
- How to apply signalR.js in a Screen sharing html page
Related Questions in MAVEN
- How to store data related to a Blazor Server circuit?
- MatTooltip not working with MatAutocompleteList in Blazor
- Blazor - Prevent double HTTP call and wait first one
- Blazor Webassembly Authentication is verry slow
- Blazor WASM Hosted - How to download a file using HttpPost
- How do I set my RadzenTextBox to String.Empty if a toggle is clicked
- Blazor clear memory with IDisposable
- CascadedParameter: When is its value applied to my components property
- Blazor child to parent two-way binding on input-text field
- How to apply signalR.js in a Screen sharing html page
Related Questions in PICOCLI
- How to store data related to a Blazor Server circuit?
- MatTooltip not working with MatAutocompleteList in Blazor
- Blazor - Prevent double HTTP call and wait first one
- Blazor Webassembly Authentication is verry slow
- Blazor WASM Hosted - How to download a file using HttpPost
- How do I set my RadzenTextBox to String.Empty if a toggle is clicked
- Blazor clear memory with IDisposable
- CascadedParameter: When is its value applied to my components property
- Blazor child to parent two-way binding on input-text field
- How to apply signalR.js in a Screen sharing html page
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
As a follow-up to this I eventually got the code working by refactoring out the "controller methods" into 3 as follows:
|
|_
MainApp.java|_
CmdRunner.java|_
TheCommand.javaWhere MainApp is the
@SpringBootApplicationwhich basically just does:Kicking everything off.
CmdRunner is an
@Component& simple implementation of theCommandLineRunnerInterface provided by SpringBoot, the most important bit is below:It executes the passed cli arguments (which were passed to it from MainApp.java) on a new picocli
CommandLineobject. Which brings us to the final class,TheCommand.javawhich is simultaneously a picocli@Command& Springboot@Controllerimplementing theRunnableinterface. And essentially just contains all the logic and (ever-growing)functionality I needed to deliver.The only downside of this implementation is that when a user runs it with the
--helpflag, the app still runs the spring boot stuff making it a little unresponsive in that particular scenario.