2025-07-10 14:53:39 -06:00

87 lines
2.4 KiB
Plaintext

== Messaging Migrations
[[use-path-pattern]]
== Use PathPatternMessageMatcher by Default
In Spring Security 7, `SimpDestMessageMatcher` is no longer supported and will use `PathPatternMessageMatcher` by default.
To check how prepared you are for this change, you can publish this bean:
[tabs]
======
Java::
+
[source,java,role="primary"]
----
@Bean
PathPatternMessageMatcherBuilderFactoryBean messageMatcherBuilder() {
return new PathPatternMessageMatcherBuilderFactoryBean();
}
----
Kotlin::
+
[source,kotlin,role="secondary"]
----
@Bean
fun messageMatcherBuilder(): PathPatternMessageMatcherBuilderFactoryBean {
return PathPatternMessageMatcherBuilderFactoryBean()
}
----
Xml::
+
[source,xml,role="secondary"]
----
<b:bean class="org.springframework.security.config.web.messaging.PathPatternMessageMatcherBuilderFactoryBean"/>
----
======
This will tell the Spring Security DSL to use `PathPatternMessageMatcher` for all message matchers that it constructs.
Use of `PathMatcher` is no longer supported in 7.
If you are using `PathMatcher` to change the path separator or to change case sensitivity for message matching, you can configure the `PathPatternParser` to do this instead like so:
[tabs]
======
Java::
+
[source,java,role="primary"]
----
@Bean
PathPatternMessageMatcherBuilderFactoryBean messageMatcherBuilder() {
PathPatternParser pathPatternParser = new PathPatternParser();
pathPatternParser.setCaseSensitive(false);
// use . as path separator
pathPatternParser.setPathOptions(PathContainer.Options.MESSAGE_ROUTE);
return new PathPatternMessageMatcherBuilderFactoryBean(pathPatternParser);
}
----
Kotlin::
+
[source,kotlin,role="secondary"]
----
@Bean
fun messageMatcherBuilder(): PathPatternMessageMatcherBuilderFactoryBean {
val pathPatternParser = PathPatternParser()
pathPatternParser.setCaseSensitive(false)
// use . as path separator
pathPatternParser.setPathOptions(PathContainer.Options.MESSAGE_ROUTE)
return PathPatternMessageMatcherBuilderFactoryBean(pathPatternParser)
}
----
Xml::
+
[source,xml,role="secondary"]
----
<b:bean class="org.springframework.web.util.pattern.PathPatternParser">
<b:property name="caseSensitive" value="false"/>
<!-- use . as path separator -->
<b:property name="pathOptions" value="#{T(org.springframework.http.server.PathContainer.Options).MESSAGE_ROUTE"/>
</b:bean>
<b:bean class="org.springframework.security.config.web.messaging.PathPatternMessageMatcherBuilderFactoryBean"/>
----
======