Spring boot 2 issue with velocity, lombok and annotation processor - spring

We have a spring boot application where we have used
java 8,
spring boot 1,
velocity 1.7,
lombok etc.
We are generating classes from custom annoations using domain annotation processor(javax.annoation.processing.*) at compile time. We use .vm files here.
But when we upgrade the spring boot from spring boot 1 to spring boot 2, the classes are not getting generated.
So is spring boot 2 not supporting velocity or reason is something else?

Related

What are the Spring Native changes from Spring Boot 2 (incubation) to Spring Boot 3?

As stated in docs: "After 3+ years of incubation in the Spring Native experimental project with Spring Boot 2, native support is moving to General Availability with Spring Framework 6 and Spring Boot 3!"
But, what are the actual changes/enhancements of the Spring Native notion that took place in Spring Boot 3, in comparison to the Spring Boot 2?
I have checked documentation, but didn't find anything till now

Using spring boot JPA features in plain Java project

I want to have a plain java project making use of spring boot JPA support, like JpaRepository, to make a library which I can inject into other spring boot projects for database operations.
Is it possible?

Spring Boot 2.0.2 - Missing classes MetricRepositoryAutoConfiguration, MetricFilterAutoConfiguration

in Spring Boot 1.5 application the application class was annotated with:
#EnableAutoConfiguration(exclude = {MetricFilterAutoConfiguration.class, MetricRepositoryAutoConfiguration.class})
These classes were I believe in the package:
import org.springframework.boot.actuate.autoconfigure.*;
Now upgrade to Spring Boot 2.0.2 but those classes are missing, can't find them anywhere.
What changed? How to solve?
Thanks!
Spring Boot’s own metrics have been replaced with support, including
auto-configuration, for Micrometer and dimensional metrics.
if you want to disable metrics set management.endpoint.metrics.enabled=false
there is a complete guide that makes migration a lot easier
Spring Boot 2.0 Migration Guide

Minimum version of spring for spring-boot v 1.3

I have an existing spring application built using spring framework version 3.1.2. I am trying to create a spring-boot application out of this existing application, but getting some dependency issues. So just wondering, what is the spring framework version, that is supported by spring-boot v 1.3.0.
Or to put it in another words, is it possible to have a spring-boot application from a spring 3.1.2 based application?
Spring boot has hard dependencies on classes in Spring 4 and could not be configured to work with Spring 3. If you are really interested in using Spring Boot the only way you can do this is to follow a migration path to Spring 4 and then add Spring Boot to your application.
It is worth mentioning that the "boot" in Spring Boot is meant to be short for bootstrapping, as in initial setup of an application. I'm not saying there would be zero benefits from migrating from Spring 4 vanilla to Spring Boot. But make sure you are migrating for the right reasons the main purpose of Spring Boot is easy bootstrapping of applications but here are some other features which might be worth making the move.
Spring Boot dev-tools (Auto restart on code changes)
Awesome spring boot plugins for maven and gradle to ease upgrading spring in the future (hint it upgrades many other dependencies for you)
Bootstrapping new features such as MongoDb through auto-configuration.
Migration from 3.1 to 3.2
https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/migration-3.2.html
Migration from Spring 3 to Spring 4.
https://spring.io/blog/2014/01/30/migrating-from-spring-framework-3-2-to-4-0-1
There are many features in spring boot that are dependent upon new features added to Spring 4. One primary example is the new list of annotations added to Spring 4 that allow conditional wiring/loading of beans. Which is the primary method of wiring configurations in a plugin-like way.
For example lets see the AutoConfiguration class for the H2 console
https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfiguration.java
The first thing we see is it's wired to be a Configuration class. It will only load if WebServlet.class is on the classpath and if the property spring.h2.console is = true. It is also configured to load SecurityAutoConfiguration first as this is a dependency at least for securing the h2 console page.
#Configuration
#ConditionalOnWebApplication
#ConditionalOnClass(WebServlet.class)
#ConditionalOnProperty(prefix = "spring.h2.console", name = "enabled", havingValue = "true", matchIfMissing = false)
#EnableConfigurationProperties(H2ConsoleProperties.class)
#AutoConfigureAfter(SecurityAutoConfiguration.class)
public class H2ConsoleAutoConfiguration {
When this Configuration is loaded it will check these conditions and upon all conditions being true then and only then will it load in the beans defined in the class. In this case it wires the h2console servlet.
#Bean
public ServletRegistrationBean h2Console() {
String path = this.properties.getPath();
String urlMapping = (path.endsWith("/") ? path + "*" : path + "/*");
return new ServletRegistrationBean(new WebServlet(), urlMapping);
}
There is also the security configuration in that class which introduces one more concept of conditionally loading a configuration based on another class being loaded into the context. These annotations do not always need to be on a Configuration level but can also apply to the bean level.
These concepts are core to how Spring Boot is implemented and therefore could not work with Spring 3.
Spring 3 list of annotations
http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/context/annotation/
Spring 4 Conditional Annotations
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/
Thanks Zergleb for posting detailed answer. I found a way to run the spring 3 app as an independent jar by created an uber jar with a little instrumentation to bootstrap spring through a java class.
It is explained nicely in a short post at https://mihhaillapushkin.wordpress.com/2013/02/18/spring-3-for-standalone-applications

What are the similarities between Spring and Spring Boot

I have a requirement that I have to use Spring Boot with JSF as user interface, as of now I am using JSF with spring other modules. So, I want know the similarities, differences and advantages of Spring boot over Spring other modules.
Long story short, Spring Boot is highly opinionated wrapper for Spring Framework with a lot of production and cloud ready features. It can significantly reduce amount of your configuration if you follow conventions.
Start reading here.
You can not compare spring boot and spring framework. Spring Boot is a new project aims to help spring development by auto configuration of things required to run the spring application.
So, if you have spring application, you can use spring boot to run your Spring application without worrying about writing the XML configuration.

Resources