Changed from a BeanPostProcessor to an ApplicationListener for ContextRefreshedEvent events. It's possible the BeanPostProcessor was causing premature initialization in some cases, so the method of wiring annotated beans was changed to only happen when an ApplicationContext is refreshed, which should mean the beans are ready to be interrogated for handler methods.
Tweak how handlers are invoked and how selectors are created. Previously, the text of a @Selector annotation was parsed as SpEL blindly. For some types of selectors that's not desirable and creates errors in the parsing. Opened the try/catch to include all exceptions and, if the text can't be parsed as an expression, it's treated as a plain String.

Also had to include an if section in the invocation code to catch cases where the handler method uses an Event as the parameter type. This was previously being ignored and the object was being blindly unwrapped.
Fix synchronization issue with Grails.
Fix conversionService loading that could have been kicked too late.
Avoid creating non consumer beans
prevent NPE if type is null. Remove unused Environment
Lookup "reactorConversionService" to avoid retrieving a list of beans. Lower message level to info.
fix issues with CGLIB proxies, evaluating String.valueOf(bean) triggers CGLib interception, e.g. Transactional proxy and leads to unexpected behavior.
Merge branch 'context-refreshed-event-listener'