[ https://issues.apache.org/jira/browse/CAMEL-18189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17716746#comment-17716746 ]
Grzegorz Grzybek commented on CAMEL-18189: ------------------------------------------ For a tiny moment I was thinking it's a matter of adding {{<beans>}} ({{org.apache.camel.model.BeansDefinition)}} in addition to existing {{<bean>}} ({{org.apache.camel.model.BeanDefinition}}) model. The point is that {{org.apache.camel.reifier.BeanReifier#createProcessor()}} which uses {{org.apache.camel.model.BeanDefinition}} to create a _bean_ is using it to create a processor delegating to a method of a bean - there's no way to configure properties of the bean created and whatever form is used: {code:xml} <bean xmlns="http://camel.apache.org/schema/spring" beanType="fqcn" /> {code} {code:xml} <bean xmlns="http://camel.apache.org/schema/spring" ref="ref-to-a-bean" /> {code} the bean is created by the registry - using the first form (with classname), the {{@Autowired}} Spring annotation is used and the bean may have the properties injected, however there's no way to declare in XML the properties/constructor arguments. Existing {{<bean>}} means "bean processor which calls a bean (from the registry) method" and it wouldn't be wise to add 2nd meaning: "bean definition for a bean instance to put into the underlying registry"... {{org.apache.camel.dsl.yaml.deserializers.BeansDeserializer#construct()}} is actually doing what should be done, but narrowed to yaml DSL - it parses the input (yaml) and adds the created beans (with proper {{properties}} handling - though without constructor args for example) to a registry obtained from {{org.apache.camel.CamelContext#getRegistry()}}... This doesn't help much in general (for XML DSL). In other words, IMO {{org.apache.camel.model.BeanDefinition}} can't be reused to play two roles: * bean processor * bean definition (to populate the registry) The naming curse is also visible here - for the new {{<bean>}} element: * the XML element name should differ ({{<bean-definition>}}?) * the new class in {{org.apache.camel.model}} should rather be called {{BeanDefinitionDefinition}} (:panic:) and should NOT extend {{org.apache.camel.model.ProcessorDefinition}} Well, the journey continues. > camel-core - XML DSL <beans> for custom beans and to embed Camel routes in > same file > ------------------------------------------------------------------------------------ > > Key: CAMEL-18189 > URL: https://issues.apache.org/jira/browse/CAMEL-18189 > Project: Camel > Issue Type: New Feature > Components: camel-core-xml > Reporter: Claus Ibsen > Assignee: Grzegorz Grzybek > Priority: Major > Fix For: Future > > > We may consider a root tag such as <beans> that are Camel specific and > therefore works on all runtimes, where we can have basic support for > dependency injection with <bean> and also embed Camel <routes> and <rests> > and <routeConfigurations> and <routeTemplates> etc all in the same file. > This can be handy for low-code projects with Camel K / Camel JBang. -- This message was sent by Atlassian Jira (v8.20.10#820010)