Skip to content

Commit f378627

Browse files
committed
Merge branch '2.5.x' into 2.6.x
Closes gh-30385
2 parents 1244c42 + 8d882fa commit f378627

File tree

2 files changed

+83
-42
lines changed

2 files changed

+83
-42
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
* Copyright 2012-2022 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.boot.autoconfigure.thymeleaf;
18+
19+
import org.thymeleaf.ITemplateEngine;
20+
import org.thymeleaf.dialect.IDialect;
21+
import org.thymeleaf.spring5.ISpringTemplateEngine;
22+
import org.thymeleaf.spring5.ISpringWebFluxTemplateEngine;
23+
import org.thymeleaf.spring5.SpringTemplateEngine;
24+
import org.thymeleaf.spring5.SpringWebFluxTemplateEngine;
25+
import org.thymeleaf.templateresolver.ITemplateResolver;
26+
27+
import org.springframework.beans.factory.ObjectProvider;
28+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
29+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
30+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
31+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
32+
import org.springframework.context.annotation.Bean;
33+
import org.springframework.context.annotation.Configuration;
34+
35+
/**
36+
* Configuration classes for Thymeleaf's {@link ITemplateEngine}. Imported by
37+
* {@link ThymeleafAutoConfiguration}.
38+
*
39+
* @author Andy Wilkinson
40+
*/
41+
class TemplateEngineConfigurations {
42+
43+
@Configuration(proxyBeanMethods = false)
44+
static class DefaultTemplateEngineConfiguration {
45+
46+
@Bean
47+
@ConditionalOnMissingBean(ISpringTemplateEngine.class)
48+
SpringTemplateEngine templateEngine(ThymeleafProperties properties,
49+
ObjectProvider<ITemplateResolver> templateResolvers, ObjectProvider<IDialect> dialects) {
50+
SpringTemplateEngine engine = new SpringTemplateEngine();
51+
engine.setEnableSpringELCompiler(properties.isEnableSpringElCompiler());
52+
engine.setRenderHiddenMarkersBeforeCheckboxes(properties.isRenderHiddenMarkersBeforeCheckboxes());
53+
templateResolvers.orderedStream().forEach(engine::addTemplateResolver);
54+
dialects.orderedStream().forEach(engine::addDialect);
55+
return engine;
56+
}
57+
58+
}
59+
60+
@Configuration(proxyBeanMethods = false)
61+
@ConditionalOnWebApplication(type = Type.REACTIVE)
62+
@ConditionalOnProperty(name = "spring.thymeleaf.enabled", matchIfMissing = true)
63+
static class ReactiveTemplateEngineConfiguration {
64+
65+
@Bean
66+
@ConditionalOnMissingBean(ISpringWebFluxTemplateEngine.class)
67+
SpringWebFluxTemplateEngine templateEngine(ThymeleafProperties properties,
68+
ObjectProvider<ITemplateResolver> templateResolvers, ObjectProvider<IDialect> dialects) {
69+
SpringWebFluxTemplateEngine engine = new SpringWebFluxTemplateEngine();
70+
engine.setEnableSpringELCompiler(properties.isEnableSpringElCompiler());
71+
engine.setRenderHiddenMarkersBeforeCheckboxes(properties.isRenderHiddenMarkersBeforeCheckboxes());
72+
templateResolvers.orderedStream().forEach(engine::addTemplateResolver);
73+
dialects.orderedStream().forEach(engine::addDialect);
74+
return engine;
75+
}
76+
77+
}
78+
79+
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java

Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2021 the original author or authors.
2+
* Copyright 2012-2022 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -24,20 +24,15 @@
2424
import nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect;
2525
import org.apache.commons.logging.Log;
2626
import org.apache.commons.logging.LogFactory;
27-
import org.thymeleaf.dialect.IDialect;
2827
import org.thymeleaf.extras.java8time.dialect.Java8TimeDialect;
2928
import org.thymeleaf.extras.springsecurity5.dialect.SpringSecurityDialect;
30-
import org.thymeleaf.spring5.ISpringTemplateEngine;
3129
import org.thymeleaf.spring5.ISpringWebFluxTemplateEngine;
3230
import org.thymeleaf.spring5.SpringTemplateEngine;
33-
import org.thymeleaf.spring5.SpringWebFluxTemplateEngine;
3431
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
3532
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
3633
import org.thymeleaf.spring5.view.reactive.ThymeleafReactiveViewResolver;
3734
import org.thymeleaf.templatemode.TemplateMode;
38-
import org.thymeleaf.templateresolver.ITemplateResolver;
3935

40-
import org.springframework.beans.factory.ObjectProvider;
4136
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
4237
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
4338
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -57,6 +52,7 @@
5752
import org.springframework.context.ApplicationContext;
5853
import org.springframework.context.annotation.Bean;
5954
import org.springframework.context.annotation.Configuration;
55+
import org.springframework.context.annotation.Import;
6056
import org.springframework.core.Ordered;
6157
import org.springframework.security.web.server.csrf.CsrfToken;
6258
import org.springframework.util.MimeType;
@@ -80,6 +76,8 @@
8076
@EnableConfigurationProperties(ThymeleafProperties.class)
8177
@ConditionalOnClass({ TemplateMode.class, SpringTemplateEngine.class })
8278
@AutoConfigureAfter({ WebMvcAutoConfiguration.class, WebFluxAutoConfiguration.class })
79+
@Import({ TemplateEngineConfigurations.ReactiveTemplateEngineConfiguration.class,
80+
TemplateEngineConfigurations.DefaultTemplateEngineConfiguration.class })
8381
public class ThymeleafAutoConfiguration {
8482

8583
@Configuration(proxyBeanMethods = false)
@@ -130,23 +128,6 @@ SpringResourceTemplateResolver defaultTemplateResolver() {
130128

131129
}
132130

133-
@Configuration(proxyBeanMethods = false)
134-
protected static class ThymeleafDefaultConfiguration {
135-
136-
@Bean
137-
@ConditionalOnMissingBean(ISpringTemplateEngine.class)
138-
SpringTemplateEngine templateEngine(ThymeleafProperties properties,
139-
ObjectProvider<ITemplateResolver> templateResolvers, ObjectProvider<IDialect> dialects) {
140-
SpringTemplateEngine engine = new SpringTemplateEngine();
141-
engine.setEnableSpringELCompiler(properties.isEnableSpringElCompiler());
142-
engine.setRenderHiddenMarkersBeforeCheckboxes(properties.isRenderHiddenMarkersBeforeCheckboxes());
143-
templateResolvers.orderedStream().forEach(engine::addTemplateResolver);
144-
dialects.orderedStream().forEach(engine::addDialect);
145-
return engine;
146-
}
147-
148-
}
149-
150131
@Configuration(proxyBeanMethods = false)
151132
@ConditionalOnWebApplication(type = Type.SERVLET)
152133
@ConditionalOnProperty(name = "spring.thymeleaf.enabled", matchIfMissing = true)
@@ -199,25 +180,6 @@ private String appendCharset(MimeType type, String charset) {
199180

200181
}
201182

202-
@Configuration(proxyBeanMethods = false)
203-
@ConditionalOnWebApplication(type = Type.REACTIVE)
204-
@ConditionalOnProperty(name = "spring.thymeleaf.enabled", matchIfMissing = true)
205-
static class ThymeleafReactiveConfiguration {
206-
207-
@Bean
208-
@ConditionalOnMissingBean(ISpringWebFluxTemplateEngine.class)
209-
SpringWebFluxTemplateEngine templateEngine(ThymeleafProperties properties,
210-
ObjectProvider<ITemplateResolver> templateResolvers, ObjectProvider<IDialect> dialects) {
211-
SpringWebFluxTemplateEngine engine = new SpringWebFluxTemplateEngine();
212-
engine.setEnableSpringELCompiler(properties.isEnableSpringElCompiler());
213-
engine.setRenderHiddenMarkersBeforeCheckboxes(properties.isRenderHiddenMarkersBeforeCheckboxes());
214-
templateResolvers.orderedStream().forEach(engine::addTemplateResolver);
215-
dialects.orderedStream().forEach(engine::addDialect);
216-
return engine;
217-
}
218-
219-
}
220-
221183
@Configuration(proxyBeanMethods = false)
222184
@ConditionalOnWebApplication(type = Type.REACTIVE)
223185
@ConditionalOnProperty(name = "spring.thymeleaf.enabled", matchIfMissing = true)

0 commit comments

Comments
 (0)