Skip to content

Instance Factories for Actions and Validators ​

By default, the annotation processor creates new handler and validator instances using reflection. For advanced scenarios, such as integration with Spring or custom DI frameworks, you can supply a custom instance factory:

java
EntityAnnotationProcessor processor = new EntityAnnotationProcessor(clazz -> applicationContext.getBean(clazz));

Or for manual/test-scoped instances:

java
MyHandler handler = new MyHandler();
var processor = new EntityAnnotationProcessor(clazz -> {
    if (clazz.equals(MyHandler.class)) return handler;
    return clazz.getDeclaredConstructor().newInstance();
});

This allows seamless integration with dependency injection frameworks or test doubles, making your annotated actions and validators highly flexible and testable.

Using with Spring ​

If you are using Spring, you can easily wire the annotation processor to use Spring's ApplicationContext for instance creation:

java
@Configuration
public class EntityConfig {
    @Autowired
    private ApplicationContext applicationContext;

    @Bean
    public EntityAnnotationProcessor entityAnnotationProcessor() {
        return new EntityAnnotationProcessor(applicationContext::getBean);
    }
}

This ensures that all your annotated handlers and validators are managed as Spring beans, enabling full dependency injection and lifecycle management.

-- Note: In future version of LibEntity, a dedicated annotation-support-spring module may be provided for even smoother integration.

Released under the MIT License. Made with ☕, 💡 and lots of Java love.