Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce FeatureSpecifications for BeanDefinitionParsers as appropriate [SPR-8039] #12694

Closed
spring-issuemaster opened this issue Mar 12, 2011 · 1 comment

Comments

@spring-issuemaster
Copy link
Collaborator

@spring-issuemaster spring-issuemaster commented Mar 12, 2011

Chris Beams opened SPR-8039 and commented

Most BeanDefinitionParsers are candidates for extraction of a FeatureSpecification type usable from within @Feature methods.

Some are not. For example, PropertyPlaceholderBeanDefinitionParser (context:property-placeholder) need not have a dedicated FeatureSpecification because (a) the implementation of PPBDP is so simple, and (b) a Property(Sources)PlaceholderConfigurer can be configured and returned directly from a @Bean method - no @Feature required.

At time of this writing, there are certain BDP impls for which it's not certain whether a FeatureSpecification extraction is appropriate. Titles for these subtask issues below are prefixed with "Investigate ...". These BDPs need to be evaluated as to whether they genuinely represent a "feature of the container", or are simply a convenience for registering a single bean. In the former case, a FeatureSpecification should likely be extracted. In the latter, direct translation to @Bean methods by users should be straightforward.

In cases where no dedicated FeatureSpecification is introduced, the BeanDefinitionParser implementation and probably also the XSD documentation should be updated to reflect how the functionality provided by this parser/element should be achieved when using @Bean methods to configure the container.

You'll notice that a subtask exists below for nearly every Spring XML namespace element shipped with the core container. Even though some elements/parsers are not candidates for FeatureSpecification extraction, the subtask remains in order to provide a single point of reference for users and maintainers about these decisions. Issues such as #12817 (regarding jdbc:embedded-database) are resolved as "Won't Fix" with an explanation why a FeatureSpecification refactoring is not necessary and instructing users how to achieve the same functionality in a @Bean method (configuring an EmbeddedDatabaseBuilder and returning its DataSource product).


Attachments:

Sub-tasks:

  • #12631 Introduce MvcInterceptors for InterceptorsBeanDefinitionParser (mvc:interceptors)
  • #12788 Introduce CacheAnnotationDriven for AnnotationDrivenCacheBeanDefinitionParser (cache:annotation-driven)
  • #12790 SpringConfiguredBeanDefinitionParser (aop:spring-configured)
  • #12791 LoadTimeWeaverBeanDefinitionParser (context:load-time-weaver)
  • #12792 SpringConfiguredBeanDefinitionParser (context:spring-configured)
  • #12793 Introduce MvcAnnotationDriven for AnnotationDrivenBeanDefinitionParser (mvc:annotation-driven)
  • #12794 Introduce ComponentScanSpec for ComponentScanBeanDefinitionParser (context:component-scan)
  • #12795 Introduce MvcDefaultServletHandler for DefaultServletHandlerBeanDefinitionParser (mvc:default-servlet-handler)
  • #12796 Introduce MvcViewControllers for ViewControllersBeanDefinitionParser (mvc:view-controllers)
  • #12797 Introduce TxAnnotationDriven for AnnotationDrivenBeanDefinitionParser (tx:annotation-driven)
  • #12798 Introduce TaskAnnotationDriven for AnnotationDrivenBeanDefinitionParser (task:annotation-driven)
  • #12800 Investigate MBeanExportBeanDefinitionParser (context:mbean-server)
  • #12801 Investigate MBeanExportBeanDefinitionParser (context:mbean-export)
  • #12802 Investigate MBeanServerBeanDefinitionParser (context:mbean-server)
  • #12803 Investigate JndiLookupBeanDefinitionParser (jee:jndi-lookup)
  • #12804 Investigate LocalStatelessSessionBeanDefinitionParser (jee:local-slsb)
  • #12805 Investigate RemoteStatelessSessionBeanDefinitionParser (jee:remote-slsb)
  • #12806 Investigate ExecutorBeanDefinitionParser (task:executor)
  • #12807 Investigate ScheduledTasksBeanDefinitionParser (task:scheduled)
  • #12808 Investigate SchedulerBeanDefinitionParser (task:scheduler)
  • #12809 Investigate ScriptBeanDefinitionParser (lang:*)
  • #12810 Investigate TxAdviceBeanDefinitionParser (tx:advice)
  • #12811 Investigate JtaTransactionManagerBeanDefinitionParser (tx:jta-transaction-manager)
  • #12812 Investigate Jaxb2MarshallerBeanDefinitionParser (oxm:jaxb2-marshaller)
  • #12813 Investigate JibxMarshallerBeanDefinitionParser (oxm:jibx-marshaller)
  • #12814 Investigate XmlBeansMarshallerBeanDefinitionParser (oxm:xmlbeans-marshaller)
  • #12815 Introduce FeatureSpecification for PropertyOverrideBeanDefinitionParser (context:property-override)
  • #12816 Introduce FeatureSpecification for PropertyPlaceholderBeanDefinitionParser (context:property-placeholder)
  • #12817 Introduce FeatureSpecification for EmbeddedDatabaseBeanDefinitionParser (jdbc:embedded-database)
  • #12818 Introduce FeatureSpecification for InitializeDatabaseBeanDefinitionParser (jdbc:initialize-database)
  • #12819 Introduce FeatureSpecification for AnnotationDrivenBeanDefinitionParser (context:annotation-driven)
  • #12820 Introduce JmsListenerContainer for JmsListenerContainerParser (jms:listener-container)
  • #12821 Introduce JcaListenerContainer for JcaListenerContainerParser (jms:jca-listener-container)
  • #12822 Investigate ScopedProxyBeanDefinitionDecorator (aop:scoped-proxy)
  • #12823 Introduce FeatureSpecification types for util:* elements and parsers

Issue Links:

  • #9775 Decouple XML parsing from bean registration in BeanDefinitionParsers

Referenced from: commits 111fb71

@spring-issuemaster

This comment has been minimized.

Copy link
Collaborator Author

@spring-issuemaster spring-issuemaster commented Dec 6, 2011

Chris Beams commented

Bulk "Won't Fix" resolution of remaining FeatureSpecification-related issues. These types were backed out in Spring 3.1 M2 in favor of @Enable* annotations and other mechanisms.

This was referenced Jan 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.