>
> However, I disagree on using only XML.  The fact is that we are here to put in
> a convention for everyone to use.  I had to make this decision before for
> componentlocator and putting managers in a java config library and adapters
> in xml and the xml overrides the java config library is a very good 
> compromise.
> We have never seen any confusion simply because there's two places to do it.
> People just follow what was there before.

I have to say as least myself got confused at first time I saw both 
component.xml
and DefaultConfigLibrary.java. I didn't know why there were two ways to do the
same thing, and as you said, I finally just followed what was there before. I 
said to
myself there were there for historical reason, but I didn't think that's a good 
idea.

I still don't see any benefit for having both java config and xml config up now.

>likelihood of a library having changeable components is
> very low.

This is not a reason for having two loading methods.
Two ways for one thing is root of confusion.


>
> What's really needed is the idea that each plugin library gives you a list of
> components to inject for them.  We really need to put that in or else
> everything is tightly coupled by the config files.  And especially here it's 
> much
> nicer to have it in a java file rather than another xml people have to track
> down because the likelihood of a library having changeable components is
> very low.  Imagine a xml for nicira and one for midokura and one for big
> switch and one for netapps and one for....  It's just wrong.
>
> --Alex
>
> > -----Original Message-----
> > From: Kelven Yang [mailto:kelven.y...@citrix.com]
> > Sent: Wednesday, February 13, 2013 2:12 PM
> > To: Frank Zhang; Edison Su; Darren Shepherd
> > Cc: cloudstack-dev@incubator.apache.org
> > Subject: Re: what's rule for using @Component and xml bean file
> >
> > Okay, I was sold by XML now, since it is more important to reduce
> > confusion from developers than taking advantage of some IDE's code
> > refactoring convenience. I wrote the code this morning which will
> > generate an initial XML bean definition. Here is the deal.
> >
> > 1) Turn-off component auto-scanning
> > 2) Define all components in XML, after this developers should always
> > have one way to declare their components which can greatly reduce the
> > confusion here. Things can become more explicit and it is easier to
> > maintain it from here.
> >
> > Kelven
> >
> > On 2/12/13 4:57 PM, "Frank Zhang" <frank.zh...@citrix.com> wrote:
> >
> > >>
> > >> On 2/12/13 11:49 AM, "Frank Zhang" <frank.zh...@citrix.com> wrote:
> > >>
> > >> >The issue here is about convention, no technical reason.
> > >> >To construct a big project, especially a project contributed by
> > >> >community,  a clear and well-understood convention is the key to
> > >> >make the project maintainable.
> > >> >In my opinion(I may be wrong), the core of convention is
> > >> >
> > >> >    "There should be one-- and preferably only one --obvious way
> > >> > to do
> > >> it"
> > >> >(from Zen of Python, ironically, I thought Python totally breaks
> > >> >this
> > >> >rule)
> > >>
> > >> +1
> > >>
> > >> >
> > >> >If we have multiple ways for one goal(again, I disagree with
> > >> >this), it will absolutely confuse people new to CloudStack: which
> > >> >way should I follow? What's the difference?
> > >> >if we don¹t have clear words on this, then people will choose by
> > >> >their preference and finally leads to a unmaintainable project.
> > >> >This is why I am strongly against having hibernate and DAO in
> > >> >CloudStack, we should
> > >> only
> > >> >have one persistence framework.
> > >> >
> > >> >               " Special cases aren't special enough to break the
> > >>rules."
> > >> >(Zen of Python again, I really like these rules though I think
> > >> >python is not following it well)
> > >> >
> > >> >Now the question comes to which convention to choose? To our topic
> > >> >is bean XML vs @Component.
> > >> >I totally understand the reason people like @Component, it's all
> > >> >about handy, especially when you write up your first Spring application.
> > >> >Except handy, @Component has no advantage comparing to bean XML,
> > >> >unfortunately, you have to read verbose and frustrating Spring
> > document
> > >> >again and again to grasp its power (I read it three times, it's
> > >> >really depressing at beginning because  too much puzzling
> > >> >information come to you without example).
> > >> >People may argue that I don't need this power, but I believe you
> > >> >will, as you are constructing a big project,  there must be one
> > >> >day you run in the situation where these power is for.
> > >> >
> > >> >However, if our convention is leading to a steep learning curve,
> > >> >it will turn developers away from CloudStack as well. The solution
> > >> >is
> > >>EXAMPLE.
> > >> >Simple and clear example is good enough to tell people how to load
> > >> >their components without knowing Spring much, if advanced feature
> > >> >is needed, they should go Spring documentation anyway.
> > >> >
> > >> >There is another advantage of bean XML is it enables Declarative
> > >> >Programming which is a key for extendibility and flexibility,
> > >> >comparing to Imperative Programming we use in our daily job. This
> > >> >is another long story, I don't want to make this long thread even
> > >> >longer here.  Thanks Darren cited an great example recently how
> > >> >declarative REST api liberates people from SDK development.
> > >> >
> > >> >I want to cite an example at last, when I use Vim first time I can
> > >> >never imagine an editor so hard to use. But after I was familiar
> > >> >with it(I did read the 600+ pages official manual), I will never
> > >> >switch to another editor anymore.
> > >>
> > >>
> > >> I think to reduce confusion is very important. Removing @Component
> > >>all  together sounds good to me. After we used it the last time to
> > >>generate the  necessary bean definition (either java or XML), we can
> > >>remove them all.
> > >>
> > >> However, whether to use pure XML or follow up the similar way of
> > >> mixing java/XML that we used before, any more opinions? I know some
> > developers
> > >> like the power of having Eclipse to do some smart editing work when
> > >>you are  refactoring the java code. Either ways, we will get rid of
> > >>auto-scanning and  only load components based on explicit
> > >>configuration, this is to solve the  slow bootstrap issue.
> > >
> > >I didn't notice JavaConfig feature which is new in Spring 3 before,
> > >after reading documents about it, I would suggest XML again.
> > >
> > >The main reason is it loses lots of power of XML,  though it's more
> > >handy in some way (to me it's unit test which I think we could adopt
> > >javaConfig in some extent).
> > >
> > >Anther strong reason is avoiding re-compiling when we make some
> > >change
> > in
> > >Spring configuration. Actually I would suggest us adopting the idea
> > >that "allow to change functionality without changing code" in any
> > >design, this would make our project stronger , more flexible, and
> > >more modular. For example, to disable a component in customer
> > >environment  for debug purpose, with XML file it's a single line
> > >change, with JavaConfig you have to re-compile and deliver some jar
> > >file, and binary jar file would not tell you how configuration looks
> > >like where XML text does tell
> > >
> > >
> > >
> > >
> > >>
> > >> -Kelven
> > >>
> > >> >
> > >> >> -----Original Message-----
> > >> >> From: Edison Su
> > >> >> Sent: Tuesday, February 12, 2013 9:44 AM
> > >> >> To: Kelven Yang; Frank Zhang; Darren Shepherd
> > >> >> Cc: cloudstack-dev@incubator.apache.org
> > >> >> Subject: RE: what's rule for using @Component and xml bean file
> > >> >>
> > >> >> IMHO, if you want configuration(your class needed to be
> > >> >>configured by admin, such as all the existing adaptors/manager),
> > >> >>use xml, otherwise, use  @Component or @named. Switch
> everything
> > >> >>into one style over anther, is  really a good idea? For example,
> > >> >>I want to my class  to be a singleton, and I  know for sure, no
> > >> >>other body wants to replace and configure it,  @Component is just
> > >> >>so handy, I don't need to blow up the xml file.
> > >> >>
> > >> >> > -----Original Message-----
> > >> >> > From: Kelven Yang [mailto:kelven.y...@citrix.com]
> > >> >> > Sent: Monday, February 11, 2013 2:24 PM
> > >> >> > To: Frank Zhang; Darren Shepherd
> > >> >> > Cc: cloudstack-dev@incubator.apache.org
> > >> >> > Subject: Re: what's rule for using @Component and xml bean
> > >> >> > file
> > >> >> >
> > >> >> >
> > >> >> >
> > >> >> > On 2/11/13 11:39 AM, "Frank Zhang" <frank.zh...@citrix.com>
> > wrote:
> > >> >> >
> > >> >> > >Ok. now I understood the story. I will go XML for my components.
> > >> >> > >I can understand the pain Kelven suffered, CloudStack has
> > >> >> > >some many components that are hard to convert to XML files at
> > >> >> > >one time, given the tight schedule we faced on javelin.
> > >> >> > >So using @Component to make Spring onboard is understandable.
> > >> >> > >
> > >> >> > >However, I agree with Darren that we should not use
> > >> >> > >@Component
> > >> and
> > >> >> > >should use JSR annotations instead of Spring specific like
> > >> >>@Autowired.
> > >> >> > >@Component is easy, but not feasible and unreadable. By not
> > >> >> > >feasible I mean you could not use amazing spring
> > >> >> > >constructor/setter injection, you may argue that you don't
> > >> >> > >need it but if someday you are, then you have to go XML way
> > >> >> > >which breaks your code convention as you have had
> @Component
> > >> >> > >mess
> > >> everywhere.
> > >> >> > >By unreadable I mean you are not able
> > >> >> to
> > >> >> > >tell what's skeleton of project if you are new to CloudStack.
> > >> >> > >The skeleton are usually made up of Spring beans, listing
> > >> >> > >these beans in XML file gives people a chance to grab a
> > >> >> > >global picture quickly, for they don't have to loss in huge
> > >> >> > >java files for
> > >>@Component.
> > >> >> > >
> > >> >> > >And Spring has some other plus on XML file, it has an
> > >> >> > >extensible framework that you can add your namespace in bean
> > >> >> > >definition, a beast tool!
> > >> >> > >
> > >> >> > >>> Option 3, Using @Configuration)
> > >> >> > >Please don't approach to this. @Configuration is not for
> > >> >> > >this. Its main purpose is using byte-weaver(Aspectj) to do
> > >> >> > >dependency injection on domain object. A domain object is
> > >> >> > >produced by your code but not Spring IOC, which means the
> > >> >> > >object generated by java
> > >> *new* keyword.
> > >> >> > >So @Configuration is largely for prototype bean, not
> > >> >> > >singleton, this is usually not you want.
> > >> >> > >
> > >> >> > >However, I don't think using Spring specific utilities is a
> > >> >> > >big
> > >>deal.
> > >> >> > >I agree that POJO is good, and Spring also encourages people
> > >> >> > >not to lock in Spring as much as possible. But to a large
> > >> >> > >enterprise project, it would unlikely switch to another
> > >> >> > >container if current container is stable and flexible(I mean Spring
> here you know).
> > >> >> > >Pursuing pure POJO will introduce boilerplate glue code and
> > >> >> > >make things over-abstract/over-wrapping sometime.  Five years
> > >> >> > >ago I was writing a C framework in Linux, to be pure, I added
> > >> >> > >a layer of wrapper for some glib component. I told my
> > >> >> > >architect that I don't want to lock in to glib,  he asked
> > >> >> > >back that why you want to switch to another library as glib
> > >> >> > >has been proved itself for a
> > >>long time?
> > >> >> > >
> > >> >> > >so, I agree we should be POJO, but just avoid being purist if
> > >> >> > >the gain is small.
> > >> >> >
> > >> >> >
> > >> >> > Yes, we've paid extra caution not to have tight-binding with
> > >> >> > Spring except about the usage of @Component annotation at meta
> level.
> > >> >> > Since we use it only at meta level, it is now actually easy to
> > >> >> > generate a bean definition XML file to switch to full XML way,
> > >> >> > however, I prefer to do it a in later time and would like to
> > >> >> > hear more developers to
> > >> >>comment
> > >> >> about it.
> > >> >> >
> > >> >> > -Kelven
> > >> >> >
> > >> >> >
> > >> >> > >
> > >> >> > >> -----Original Message-----
> > >> >> > >> From: Kelven Yang
> > >> >> > >> Sent: Monday, February 11, 2013 10:48 AM
> > >> >> > >> To: Darren Shepherd
> > >> >> > >> Cc: Frank Zhang; cloudstack-dev@incubator.apache.org
> > >> >> > >> Subject: Re: what's rule for using @Component and xml bean
> > >> >> > >> file
> > >> >> > >>
> > >> >> > >>
> > >> >> > >>
> > >> >> > >> On 2/9/13 6:54 AM, "Darren Shepherd" <dar...@godaddy.com>
> > >> wrote:
> > >> >> > >>
> > >> >> > >> >Sorry, technical error in sending the last email...
> > >> >> > >> >
> > >> >> > >> >
> > >> >> > >> >Please, please, please do note use spring packages. Spring
> > >> >> > >> >should be a runtime and not compile time dependency. If
> > >> >> > >> >you leave spring as a compile time dependency you'll see
> > >> >> > >> >overtime that developers start leveraging handy spring
> > >> >> > >> >utilities and
> > >> components.
> > >> >> > >> >Architecturally it does make sense to have dependencies on
> > such
> > >> >> > >> >a large component as spring for utility style
> > >> >> > >> >functionality, that is what apache commons is
> > >> >> > >>for.
> > >> >> > >> >
> > >> >> > >> >So my two cents.
> > >> >> > >> >
> > >> >> > >> >Option 1, Using coding convention to reduce the auto-scan
> > >> >> > >> >scope,)
> > >> >> > >> >
> > >> >> > >> >
> > >> >> > >> >Not feasible in a realistic time frame
> > >> >> > >> >
> > >> >> > >> >Option 2, Using build-time XML auto-generation)
> > >> >> > >> >
> > >> >> > >> >Too much of a one off solution.  This is just another
> > >> >> > >> >thing people have to understand that is different from how
> > >> >> > >> >the majority of people use spring.  And its uses a spring
> > >> >> > >> >specific
> > >> annotation.
> > >> >> > >> >
> > >> >> > >> >Option 3, Using @Configuration)
> > >> >> > >> >
> > >> >> > >> >Yeah people don't like XML.  But the eclipse support and
> > >> >> > >> >specifically the Spring IDE support for the XML
> > >> >> > >> >configuration is awesome.  The new p namespace also makes
> > >> >> > >> >the XML less
> > >> verbose.
> > >> >> > >> >So, oh well, write some XML it won't kill you.  If you use
> > >> >> > >> >autowiring you'll find that mostly you are just
> > >> >> > >> >registering the bean and the XML is quite small.  Again,
> > >> >> > >> >for simplest learning curve to developing and
> > >> >> > >> >understanding CloudStack just stick with
> > >> >>the
> > >> >> XML.
> > >> >> > >> >
> > >> >> > >> >
> > >> >> > >> >So again, I'm going to strongly assert that CloudStack
> > >> >> > >> >should
> > >> >> > >> >
> > >> >> > >> >1) Use JSR250, JSR330 annotations (@Inject,
> > >> >> > >> >@PostConstruct,
> > >> >> > >> >@PreDestroy)
> > >> >> > >> >2) Register all beans in XML
> > >> >> > >> >3) Use autowiring
> > >> >> > >>
> > >> >> > >>
> > >> >> > >> We have hundreds of Bean components in CloudStack, it is
> > >> >> > >>quite annoying to  register all of them in XML and to
> > >> >> > >>maintain it when code-refactoring is still  going on. So we
> > >> >> > >>are taking some compromises here, for your points, we are
> > >> >> > >>definitely using auto wiring, but for
> > >> >> > >>1) and 2), we used one more Spring  defined annotation
> > >> >> > >>(@Component), which may not sound elegant that it has
> > >> >> > >>Spring dependency, but the dependency is only at
> > >> >> > >>meta(annotation)
> > level,
> > >> >> > >>we have very limited places that require a direct reference
> > >> >> > >>to
> > >>Spring
> > >> at code  level.
> > >> >> > >>
> > >> >> > >> Having some meta level annotations and combining with the
> > >> >> > >>flexibility of  XML is pretty much the census I've got from
> > >> >> > >>local CloudStack developers  around me, this may not the
> > >> >> > >>final
> > approach
> > >> >> > >>either, let's give it some time to  evolve based on broader
> > >> >> > >>feedbacks from the community
> > >> >> > >>
> > >> >> > >> -kelven
> > >> >> > >>
> > >> >> > >>
> > >> >> > >>
> > >> >> > >> >
> > >> >> > >> >Darren
> > >> >> > >> >
> > >> >> > >> >On Feb 9, 2013, at 12:05 AM, Kelven Yang
> > >> >> > >> ><kelven.y...@citrix.com>
> > >> >> > >>wrote:
> > >> >> > >> >
> > >> >> > >> >>
> > >> >> > >> >> Apologize for such a long email first, if you are
> > >> >> > >> >>interested, please read  on...
> > >> >> > >> >>
> > >> >> > >> >>
> > >> >> > >> >> Auto-scan globally is never a good idea and we are
> > >> >> > >> >>currently doing it just  for the reason of getting
> > >> >> > >> >>existing code quickly
> > >> >>converted.
> > >> >> > >> >>I'm currently  profiling some details on how much time
> > >> >> > >> >>Spring has spent for scanning the  component and how much
> > >> >> > >> >>time it spends to resolve dependency and performs  auto-
> wiring.
> > >> >> > >> >>
> > >> >> > >> >> There are both "pros and cons" for in doing in
> > >> >> > >> >>annotation way or in XML  way. Historically in CloudStack
> > >> >> > >> >>we are doing code-refactoring quite often,  this makes
> > >> >> > >> >>using annotation attractive to CloudStack developers.
> > >> >> > >> >>However,
> > >> >> > >> >> we also need flexibility provided by XML for people to
> > >> >> > >> >>customize CloudStack after deployment, so historically,
> > >> >> > >> >>CloudStack prefers to take  advantages of both annotation
> > >> >> > >> >>way and XML way. For built-in or other basic  components
> > >> >> > >> >>like DAOs, using annotations can save developers a lot of
> > >> >> > >> >>typing work. For pluggable components like Adapters,
> > >> >> > >> >>Network Elements,  having them in XML
> > >> >> makes more sense.
> > >> >> > >> >>
> > >> >> > >> >> As a general guideline, we should keep component as
> > >> >> > >> >>independent of others  as possible, as loosely coupled
> > >> >> > >> >>with other as possible. The motivation of  adopting
> > >> >> > >> >>Spring is for that purpose, to enforce a consistent way
> > >> >> > >> >>of  developing pluggable,
> > >> >>unit-testable
> > >> >> components.
> > >> >> > >> >>
> > >> >> > >> >> However, there is never a perfect solution that can
> > >> >> > >> >>satisfy everyone's  needs, I would prefer to just using
> > >> >> > >> >>auto-wiring and leaving component  definitions all in
> > >> >> > >> >>XML, in this way, component and a particular container
> > >> >> > >> >>are not tightly coupled (does not necessarily to be
> > >> >> > >> >>Spring), however, in  reality, using @Component with
> > >> >> > >> >>caution can give developers decent freedom  to write
> > >> >> > >> >>component independently
> > >> >> > >> (they
> > >> >> > >> >>don't need to remember to edit Java  and XML at multiple
> > >> >> > >> >>places and not everyone likes XML soup).
> > >> >> > >> >>
> > >> >> > >> >> A possible solution to combine both the advantages of
> > >> >> > >> >>using @Component and  XML <bean> definitions could be
> > >> >> > >> >>
> > >> >> > >> >> Option 1, Using coding convention to reduce the
> > >> >> > >> >> auto-scan scope, for example,
> > >> >> > >> >>
> > >> >> > >> >> All components (Spring component specifically) have to
> > >> >> > >> >>share with the same  java package namespace, for example,
> > >> >> > >> >>org.apache.cloudstack.component.
> > >> >> > >> >> overall module/java package structure would look like,
> > >> >> > >> >>Cloud-engine
> > >> >> > >> >>(module)  org.apache.cloudstack.component.XyzMgr
> > >> >> > >> >> org.apache.cloudstack.component.AbcAdapter
> > >> >> > >> >>
> > >> >> > >> >> Cloud-cool-plugin (module)
> > >> >> > >> >> org.apache.cloudstack.component.CoolMgr
> > >> >> > >> >> org.apache.cloudstack.component.CoolAdapter
> > >> >> > >> >>
> > >> >> > >> >>
> > >> >> > >> >>
> > >> >> > >> >> And we only scan org.apache.cloudstack.component.
> > >> >> > >> >>
> > >> >> > >> >> We didn't use this approach for the reason that this
> > >> >> > >> >> involves with a lot of directory refactoring work, and
> > >> >> > >> >> this is too bad for branch
> > >> >> > >>merges.
> > >> >> > >> >>
> > >> >> > >> >> Option 2, Using build-time XML auto-generation
> > >> >> > >> >>
> > >> >> > >> >> With this option, developers can continue to use
> > @Component
> > >> >> > >> >> for meta-programming, we can add a step in build-process
> > >> >> > >> >> that we can automatically generate the Spring XML file
> > >> >> > >> >> for components that have been annotated by @Component.
> > >> >> > >> >>
> > >> >> > >> >> However, our maven build is already slow now, what we
> > >> >> > >> >>saved in bootstrapping will have to be paid at build
> > >> >> > >> >>time, so for developers, this  option may still looks
> > >> >> > >> >>slow
> > >> >> > >> >>
> > >> >> > >> >> Option 3, Using @Configuration (one more Spring
> > >> >> > >> >> annotation!) Cloud-server and pluggable module, each can
> > >> >> > >> >> have a per-
> > module
> > >> >> > >> >> Spring component configuration class (annotated by
> > >> >> > >> >> @Configuration) and we only scan configuration
> > >> >> > >> >> components
> > at
> > >> >> bootstrap.
> > >> >> > >> >>
> > >> >> > >> >> Option 3 does not need us to refactor existing directory
> > >> >> > >> >> structure, and have the flexibility for developers to do
> > >> >> > >> >> module development independently, as I mentioned early,
> > >> >> > >> >> I'm profiling the Spring bootstrap process, if it is
> > >> >> > >> >> confirmed that majority of time is spent in scanning
> > >> >> > >> >> instead of auto-wiring, I'm actually leaning towards
> > >> >> > >>this option.
> > >> >> > >> >>
> > >> >> > >> >> As of whether or not to strictly limit the usage of
> > >> >> > >> >>Spring specific stuff,
> > >> >> > >> >> **never** or **ever** to use @Component, I'm not a
> > >> >> > >> >>perfect-ist but a more  practical one, so using
> > >> >> > >> >>@Component only for meta programming looks fine to  me.
> > >> >> > >> >>And In this option, @Component is actually not
> > >> >> > >> >>necessarily to be  defined by Spring, we just happen to
> > >> >> > >> >>borrow it and that's it. I'm kind of  buying the point
> > >> >> > >> >>that with such a powerful editor like Eclipse, it seems
> > >> >> > >> >>to be much easier for code-refactoring if
> > >>things
> > >> are written in "java"
> > >> >> > >> >> instead of XML.
> > >> >> > >> >>
> > >> >> > >> >> Kelven
> > >> >> > >> >>
> > >> >> > >> >>
> > >> >> > >> >>
> > >> >> > >> >> On 2/8/13 9:38 PM, "Darren Shepherd"
> > <dar...@godaddy.com>
> > >> >> > wrote:
> > >> >> > >> >>
> > >> >> > >> >>> Frank,
> > >> >> > >> >>>
> > >> >> > >> >>> This is probably not the answer you looking for, but I
> > >> >> > >> >>>have to just throw in my two cents. When should you use
> > >> @Component?
> > >> >> > Never.
> > >> >> > >> >>>The cleanest way to use the Spring container is to
> > >> >> > >> >>>*never* "import org.springframework". Only bootstrap and
> > >> >> > >> >>>obviously spring specific code  should import spring
> > >> >> > >> >>>packages. JSR250 and
> > >> >> > >> >>>JSR330 provide standards  compliant annotations that can
> > >> >> > >> >>>be used in place of the Spring one's that  give most of
> > >> >> > >> >>>all the functionality. Refer to
> > >> >> > >> >>>
> > >> >> > >> >>>http://static.springsource.org/spring/docs/3.2.x/spring-
> > >> >> > >> >>>frame
> > >> >> > >> >>>wor
> > >> >> > >> >>>k-
> > >> >> > >> >>>ref
> > >> >> > >> >>>ere
> > >> >> > >> >>>nc
> > >> >> > >> >>> e/html/beans.html#beans-standard-annotations.
> > >> >> > >> >>> The standard compliant annotation of @Component would
> > be
> > >> >> > @Named
> > >> >> > >> from
> > >> >> > >> >>> JSR250 (which is included in the JDK at this point).
> > >> >> > >> >>>
> > >> >> > >> >>> Regarding when to use @Named and when to register the
> > bean
> > >> >> > >> >>> in
> > >> >> > XML.
> > >> >> > >> >>>You  should never use @Named. I'm sure many will
> > >> >> > >> >>>disagree with me but past  experiences have over and
> > >> >> > >> >>>over again
> > shown
> > >> >> > >> >>>to me that
> > >> >> > >> component
> > >> >> > >> >>>scanning  on large scale projects is a bad idea.
> > >> >> > >> >>>Ignoring bad initialization  performance, component
> > >> >> > >> >>>scanning ends up introducing weird difficult to  debug
> > >> >> > >> >>>issues when some does something dumb. It is better to
> > >> >> > >> >>>have a  clear and definitive source regarding what is
> registered in your  context.
> > >> >> > >> >>>
> > >> >> > >> >>> Additionally if you get into context hierarchies (which
> > >> >> > >> >>> I hope you do, but that is a different topic
> > >> >> > >> >>> altogether), component scanning
> > >> >> > >>blows
> > >> >> > >> up.
> > >> >> > >> >>>
> > >> >> > >> >>> Darren
> > >> >> > >> >>>
> > >> >> > >> >>>
> > >> >> > >> >>>
> > >> >> > >> >>>
> > >> >> > >> >>>
> > >> >> > >> >>>
> > >> >> > >> >>>
> > >> >> > >> >>>
> > >> >> > >> >>> -------- Original Message --------
> > >> >> > >> >>> Subject: what's rule for using @Component and xml bean
> > >> >> > >> >>> file
> > >> >> > >> >>> From: Frank Zhang <frank.zh...@citrix.com>
> > >> >> > >> >>> Date: Fri, February 08, 2013 6:39 pm
> > >> >> > >> >>> To: "cloudstack-dev@incubator.apache.org"
> > >> >> > >> >>> <cloudstack-dev@incubator.apache.org>
> > >> >> > >> >>>
> > >> >> > >> >>>
> > >> >> > >> >>> I see client/tomcatconf/componentContext.xml.in
> > >> >> > >> >>> defining lots of beans while I also see many beans use
> > >> >> > >> >>> @Component
> > Is
> > >> >> > >> >>> there any guideline here?
> > >> >> > >> >>
> > >> >> > >
> > >> >
> > >

Reply via email to