Uploaded image for project: 'Spring Framework'
  1. Spring Framework
  2. SPR-8808

Allow @Configuration classes to [email protected]

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Complete
    • Affects Version/s: 3.1 RC1
    • Fix Version/s: 3.1 RC2
    • Component/s: Core
    • Labels:
      None
    • Last commented by a User:
      true

      Description

      I am using AnnotationConfigWebApplicationContext and XML-free testing support with @ContextConfiguration(classes=...). When pointed @Configuration class contains @ComponentScan with a package containing that class:

      package com.example.foo;
      
      @Configuration
      @ComponentScan(basePackages = "com.example.foo")
      public class Config { }
      

      I get unexpected exception:

      org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'config' for bean class [com.example.foo.Config] conflicts with existing, non-compatible bean definition of same name and class [com.example.foo.Config]
      

      While I understand why it happens, IMHO Spring should handle this case and simply ignore @Configuration found in scanned package if it has already been provided in AnnotationConfigWebApplicationContext.

      Test case attached. On branch master you'll find a test case failing, branch fix fixes the problem by simply @Config to another package.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              cbeams Chris Beams
              Reporter:
              nurkiewicz Tomasz Nurkiewicz
              Last updater:
              Spring Issues
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Days since last comment:
                2 years, 6 weeks, 6 days ago