paul nisset wrote:How does Spring Boot differ from Spring Roo ?
I briefly compared them in a separate thread, but here's another take on it...
Spring Roo made it easy to get started with Spring development by enabling you to specify features you want to add to your project and having it generate code for those pieces. For instance, you could ask for a new model object and it would generate a model class for you; ask for a controller and you get a basic controller; ask for scaffolding for a model and you get scaffolding. In most/all cases, you get a Java class that you can edit alongside an AspectJ inter-type declaration (ITD...eg, an introduction) that you're supposed to check into source control, but not touch. For scaffolding purposes, Roo would also generate (and to some degree maintain) JSPX files for your views. You can edit the JSPX files, but care has to be taken to ensure you don't edit something that Roo will regenerate for you.
The AspectJ ITDs made a lot of people uncomfortable, either because fear of AspectJ or because you can't edit them. And the "Real Object Oriented" nature of Spring Roo (which is where Roo got its name...not from kangaroos) wasn't welcome by many developers who demanded that Roo bend to fit more common patterns.
In short, Spring Roo employs code generation to promote a very opinionated programming model...and it's not even an opinion that many developers are comfortable with.
In contrast, Spring Boot, while somewhat opinionated, doesn't enforce any opinions on the patterns you use to develop your app. Its opinions are focused primarily on how to configure the components your app uses--You're welcome to do whatever you want with your application code. And...those opinions are easily overridden by simply writing explicit configuration; auto-configuration will step back if it sees that you've already configured something it was going to configure. And there's no code generation of any kind. All of the code you check into source code is code you write and you're welcome to edit it however you see fit. And although you're welcome to use AspectJ if you want, Spring Boot doesn't require it.