camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Nuttall <mknutt...@gmail.com>
Subject Re: Camel Spring Boot: Bean initialization skipped in auto-configuration
Date Thu, 12 Oct 2017 12:40:23 GMT
Sorry. I guess my reply was not clear.  I wasn't saying it need changes. I
was just saying (and i tried it about a year ago) is that Spring Boot needs
a little config to expose things "correctly" when using that component.
That article was the first one i came too when i googled. :(  Maybe it
doesn't anymore? :)

I was only trying to figure out what might possible cause the issue he was
seeing. And also to give him a work around.

On Thu, Oct 12, 2017 at 8:27 AM, Claus Ibsen <claus.ibsen@gmail.com> wrote:

> On Thu, Oct 12, 2017 at 2:20 PM, Mark Nuttall <mknuttall@gmail.com> wrote:
> > well that does sound like an issue with the camel-http-starter component
> > and would be something for the maintainers.
> > If i remember rightly, using that component with spring boot requires
> some
> > minor coding additions to get things to work (i.e. like this -
> > http://www.frommknecht.net/spring-boot-meets-apache-camel/). It might be
> > related.
> >
> > So, what I suggest is just use Spring Controllers instead. It is VERY
> easy
> > to do and just use the producerTemplate to send thing to camel routes.
> This
> > is what I do.
> >
>
> No camel-http-starter does not need any changes.
> That link your provided is to some old article from 2014.
>
> Sure spring-mvc is a good web library and you can easily integrate
> with with Camel with producer templates or other means.
>
> > On Thu, Oct 12, 2017 at 4:12 AM, Florian Posch <
> > florian.posch@performgroup.com> wrote:
> >
> >> Hi,
> >>
> >> Thanks for your swift reply.
> >>
> >> As mentioned in the Stackoverflow question, it is not a matter of
> generic
> >> objects like Map<> or Object because injection of a domain-specific
> class
> >> doesn't work either.
> >>
> >> Finally, I've found out what could potentially cause the problem: For my
> >> case, it depends on whether camel-http-starter is on the classpath or
> not.
> >> If I remove that dependency MyInflightRepositorys' data field gets
> >> injected, otherwise not. Not sure if this makes any sense in the given
> >> sample but that changes our application's behaviour...
> >>
> >> See https://github.com/DoNuT1985/camel-dependency-sample
> >>
> >> I hope this helps.
> >>
> >> Kind regards,
> >> Florian
> >>
> >>
> >>
> >>
> >> Florian Posch // Software Engineer
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> T   -
> >>
> >> RunningBall Sports Information GmbH
> >> M  -
> >>
> >> Plabutscher Straße 63
> >> F   -
> >>
> >> 8051 Graz
> >> E   florian.posch@performgroup.com
> >>
> >> Austria
> >> Skype rb.fposch
> >>
> >>
> >>
> >>
> >> W www.performgroup.com
> >>
> >>
> >> -----Ursprüngliche Nachricht-----
> >> Von: Mark Nuttall [mailto:mknuttall@gmail.com]
> >> Gesendet: Mittwoch, 11. Oktober 2017 13:45
> >> An: users@camel.apache.org
> >> Betreff: Re: Camel Spring Boot: Bean initialization skipped in
> >> auto-configuration
> >>
> >> I looked at stacktrace and your code here. I agree with the comment
> about
> >> the Map. The same thing can happen with strings. I am not sure what the
> map
> >> does but you might be able to that in Spring properties. If not, either
> >> create a class to hold the map and make that class the Bean or provide a
> >> name to the Bean and make sure you use that when you inject the bean.
> >>
> >> I think we are going to need a copy of code that does not work. I use
> >> Spring Boot and Camel pretty extensively and while it is not without
> >> issues, it was usually due to me doing something probably I shouldnt
> have
> >> or there was a better way. :)
> >>
> >> Also, as suggested, use constructor injection. The version of Boot you
> are
> >> using makes it very easy - all you need is a single constructor on your
> >> managed object (to include the RouteBuilder). And if you use Lombok, it
> is
> >> even easier.
> >>
> >> Mark
> >>
> >> On Wed, Oct 11, 2017 at 4:41 AM, Florian Posch <
> >> florian.posch@performgroup.com> wrote:
> >>
> >> > Hi,
> >> >
> >> > I'm using Camel 2.19.3 and Spring Boot 1.5.7 including the
> >> > corresponding Camel starter for my application and am having some
> >> > issues with a custom InflightRepository getting set up.
> >> >
> >> > It is defined as Spring @Component and should get applied to the
> >> > context by auto-configuration but the problem is that the bean isn't
> >> > properly initialized
> >> >
> >> >         @Component
> >> >         public class MyInflightRepository extends
> >> > DefaultInflightRepository {
> >> >
> >> >                 @Autowired
> >> >                 private MyInjectedBean bean;
> >> >
> >> >                 // ...
> >> >         }
> >> >
> >> >
> >> > The repository gets applied to the CamelContext as well as it is
> >> > available but to me it looks as if premature bean access in
> >> > CamelAutoConfiguration.afterPropertiesSet
> >> > causes the bean not being initialiized properly (so @Autowired members
> >> > remain null but Spring starts up without an error). As far as I
> >> > understood this happens because Application.getBeansByType(...) gets
> >> > called before all property resolvers are initialized.
> >> >
> >> > I was able to work around that by manually initializing my
> >> > InflightRepository and setting it in a CamelConfiguration bean but for
> >> > my taste this is a bit dangerous to scan for custom beans that might
> >> > not get initialized properly during startup.
> >> >
> >> > There's a more detailed snippet given on my Stackoverflow post:
> >> > https://stackoverflow.com/questions/46680985/spring-
> >> > boot-camel-autowiring-issues-in-camel-components
> >> >
> >> > Any question, please let me know...
> >> >
> >> > Kind regards,
> >> > Florian
> >> >
> >> > Florian Posch // Software Engineer
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > T   -
> >> >
> >> > RunningBall Sports Information GmbH
> >> > M  -
> >> >
> >> > Plabutscher Straße 63
> >> > F   -
> >> >
> >> > 8051 Graz
> >> > E   florian.posch@performgroup.com
> >> >
> >> > Austria
> >> > Skype rb.fposch
> >> >
> >> >
> >> >
> >> >
> >> > W www.performgroup.com
> >> >
> >> >
> >> >
> >>
> >> ____________________________________________________________
> ____________
> >>
> >> CONFIDENTIALITY - This email and any files transmitted with it, are
> >> confidential, may be legally privileged and are intended solely for the
> use
> >> of the individual or entity to whom they are addressed. If this has
> come to
> >> you in error, you must not copy, distribute, disclose or use any of the
> >> information it contains. Please notify the sender immediately and delete
> >> them from your system.
> >>
> >> SECURITY - Please be aware that communication by email, by its very
> >> nature, is not 100% secure and by communicating with Perform Group by
> email
> >> you consent to us monitoring and reading any such correspondence.
> >>
> >> VIRUSES - Although this email message has been scanned for the presence
> of
> >> computer viruses, the sender accepts no liability for any damage
> sustained
> >> as a result of a computer virus and it is the recipient’s
> responsibility to
> >> ensure that email is virus free.
> >>
> >> AUTHORITY - Any views or opinions expressed in this email are solely
> those
> >> of the sender and do not necessarily represent those of Perform Group.
> >>
> >> COPYRIGHT - Copyright of this email and any attachments belongs to
> Perform
> >> Group, Companies House Registration number 6324278.
> >>
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message