Skip to content
This repository was archived by the owner on Oct 11, 2025. It is now read-only.

Commit 5079a3b

Browse files
authored
Merge pull request #449 from codeconsole/4.0.x-dynamic-autoconfigurations
register autoconfigurations dynamically
2 parents 9938408 + 8e3f5a7 commit 5079a3b

1 file changed

Lines changed: 10 additions & 15 deletions

File tree

grails-testing-support/src/main/groovy/org/grails/testing/GrailsApplicationBuilder.groovy

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.grails.testing
22

33
import grails.boot.config.GrailsApplicationPostProcessor
4-
import grails.boot.config.GrailsAutoConfiguration
54
import grails.core.GrailsApplication
65
import grails.core.GrailsApplicationLifeCycle
76
import grails.core.support.proxy.DefaultProxyHandler
@@ -12,10 +11,6 @@ import groovy.transform.CompileDynamic
1211
import groovy.transform.CompileStatic
1312
import jakarta.servlet.ServletContext
1413
import org.grails.plugins.IncludingPluginFilter
15-
import org.grails.plugins.codecs.CodecsConfiguration
16-
import org.grails.plugins.core.CoreConfiguration
17-
import org.grails.plugins.databinding.DataBindingConfiguration
18-
import org.grails.plugins.web.mime.MimeTypesConfiguration
1914
import org.grails.spring.context.support.GrailsPlaceholderConfigurer
2015
import org.grails.spring.context.support.MapBasedSmartPropertyOverrideConfigurer
2116
import org.grails.transaction.TransactionManagerPostProcessor
@@ -27,6 +22,8 @@ import org.springframework.beans.factory.config.ConstructorArgumentValues
2722
import org.springframework.beans.factory.support.BeanDefinitionRegistry
2823
import org.springframework.beans.factory.support.DefaultListableBeanFactory
2924
import org.springframework.beans.factory.support.RootBeanDefinition
25+
import org.springframework.boot.autoconfigure.AutoConfiguration
26+
import org.springframework.boot.context.annotation.ImportCandidates
3027
import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer
3128
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebApplicationContext
3229
import org.springframework.context.ConfigurableApplicationContext
@@ -36,10 +33,6 @@ import org.springframework.context.support.ConversionServiceFactoryBean
3633
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer
3734
import org.springframework.context.support.StaticMessageSource
3835
import org.springframework.core.Ordered
39-
import org.springframework.core.convert.ConversionService
40-
import org.springframework.core.env.ConfigurableEnvironment
41-
import org.springframework.core.env.Environment
42-
import org.springframework.core.env.PropertyResolver
4336
import org.springframework.util.ClassUtils
4437

4538
/**
@@ -108,19 +101,22 @@ class GrailsApplicationBuilder {
108101
}
109102

110103
protected ConfigurableApplicationContext createMainContext(Object servletContext) {
111-
112104
ConfigurableApplicationContext context
113-
114105
if (isServletApiPresent && servletContext != null) {
115106
context = (AnnotationConfigServletWebApplicationContext) ClassUtils.forName('org.springframework.boot.web.servlet.context.AnnotationConfigServletWebApplicationContext').getDeclaredConstructor().newInstance()
116107
((AnnotationConfigServletWebApplicationContext) context).setServletContext((ServletContext) servletContext)
117108
} else {
118109
context = (ConfigurableApplicationContext) ClassUtils.forName('org.springframework.context.annotation.AnnotationConfigApplicationContext').getDeclaredConstructor().newInstance()
119110
}
120-
((AnnotationConfigRegistry) context).register(CoreConfiguration, CodecsConfiguration, DataBindingConfiguration, MimeTypesConfiguration)
121111

122-
def applicationClassLoader = this.class.classLoader
123-
def configuredEnvironment = context.getEnvironment()
112+
def classLoader = this.class.classLoader
113+
ImportCandidates.load(AutoConfiguration, classLoader).asList().findAll {
114+
it.startsWith("org.grails")
115+
&& !it.contains("UrlMappingsAutoConfiguration") // this currently is causing an issue with tests
116+
}.each {
117+
((AnnotationConfigRegistry) context).register(ClassUtils.forName(it, classLoader))
118+
}
119+
124120
def beanFactory = context.getBeanFactory()
125121
(beanFactory as DefaultListableBeanFactory).with {
126122
setAllowBeanDefinitionOverriding(true)
@@ -129,7 +125,6 @@ class GrailsApplicationBuilder {
129125
prepareContext(context, beanFactory)
130126
context.refresh()
131127
context.registerShutdownHook()
132-
133128
return context
134129
}
135130

0 commit comments

Comments
 (0)