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

Add support for Kotlin autowired constructor with optional parameters

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Complete
    • Affects Version/s: 5.0 RC3
    • Fix Version/s: 5.0 RC4
    • Component/s: Core
    • Labels:
    • Last commented by a User:
      true

      Description

      @Component
      class A(val str: String = "whatever", val b: B) { 
      // class A constructor(val str: String = "whatever", @Autowired val b: B) doesn't work either 
      }
      
      @Component
      class B {
      }
      
      @SpringBootApplication
      class DemoApplication
      
      fun main(args: Array<String>) {
          SpringApplication.run(DemoApplication::class.java, *args)
      }
      
      org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'a' defined in file [<elided>/A.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.example.demo.A]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.example.demo.A.<init>()
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1242) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1141) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3]
      Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.example.demo.A]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.example.demo.A.<init>()
      	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:84) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1234) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3]
      	... 16 common frames omitted
      Caused by: java.lang.NoSuchMethodException: com.example.demo.A.<init>()
      	at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_131]
      	at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[na:1.8.0_131]
      	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:79) ~[spring-beans-5.0.0.RC3.jar:5.0.0.RC3]
      	... 17 common frames omitted
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                sdeleuze S├ębastien Deleuze
                Reporter:
                asarkar Abhijit Sarkar
                Last updater:
                Juergen Hoeller
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Days since last comment:
                  42 weeks, 4 days ago