17 changed files with 539 additions and 237 deletions
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.mvccorsglobal; |
||||
|
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry; |
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; |
||||
|
||||
// tag::snippet[]
|
||||
@Configuration |
||||
public class WebConfiguration implements WebMvcConfigurer { |
||||
|
||||
@Override |
||||
public void addCorsMappings(CorsRegistry registry) { |
||||
registry.addMapping("/api/**") |
||||
.allowedOrigins("https://domain1.com", "https://domain2.com") |
||||
.allowedMethods("GET", "PUT") |
||||
.allowedHeaders("header1", "header2", "header3") |
||||
.exposedHeaders("header1", "header2") |
||||
.allowCredentials(true) |
||||
.maxAge(3600); |
||||
|
||||
// Add more mappings...
|
||||
} |
||||
} |
||||
// end::snippet[]
|
||||
|
||||
@ -0,0 +1,48 @@
@@ -0,0 +1,48 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.webmvc.mvccontroller.mvcannrequestmappingregistration; |
||||
|
||||
import java.lang.reflect.Method; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.web.bind.annotation.RequestMethod; |
||||
import org.springframework.web.servlet.mvc.method.RequestMappingInfo; |
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; |
||||
|
||||
// tag::snippet[]
|
||||
@Configuration |
||||
public class MyConfiguration { |
||||
|
||||
// Inject the target handler and the handler mapping for controllers
|
||||
@Autowired |
||||
public void setHandlerMapping(RequestMappingHandlerMapping mapping, UserHandler handler) |
||||
throws NoSuchMethodException { |
||||
|
||||
// Prepare the request mapping meta data
|
||||
RequestMappingInfo info = RequestMappingInfo |
||||
.paths("/user/{id}").methods(RequestMethod.GET).build(); |
||||
|
||||
// Get the handler method
|
||||
Method method = UserHandler.class.getMethod("getUser", Long.class); |
||||
|
||||
// Add the registration
|
||||
mapping.registerMapping(info, handler, method); |
||||
} |
||||
} |
||||
// end::snippet[]
|
||||
|
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.webmvc.mvccontroller.mvcannrequestmappingregistration; |
||||
|
||||
public class UserHandler { |
||||
|
||||
public void getUser(Long id) { |
||||
// ...
|
||||
} |
||||
} |
||||
|
||||
@ -0,0 +1,59 @@
@@ -0,0 +1,59 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.webmvcfnrunning; |
||||
|
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.http.converter.HttpMessageConverters; |
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry; |
||||
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; |
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; |
||||
import org.springframework.web.servlet.function.RouterFunction; |
||||
|
||||
// tag::snippet[]
|
||||
@Configuration |
||||
public class WebConfiguration implements WebMvcConfigurer { |
||||
|
||||
@Bean |
||||
public RouterFunction<?> routerFunctionA() { |
||||
// ...
|
||||
return null; |
||||
} |
||||
|
||||
@Bean |
||||
public RouterFunction<?> routerFunctionB() { |
||||
// ...
|
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public void configureMessageConverters(HttpMessageConverters.ServerBuilder builder) { |
||||
// configure message conversion...
|
||||
} |
||||
|
||||
@Override |
||||
public void addCorsMappings(CorsRegistry registry) { |
||||
// configure CORS...
|
||||
} |
||||
|
||||
@Override |
||||
public void configureViewResolvers(ViewResolverRegistry registry) { |
||||
// configure view resolution for HTML rendering...
|
||||
} |
||||
} |
||||
// end::snippet[]
|
||||
|
||||
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.websocket.websocketfallbacksockjsclient; |
||||
|
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.web.socket.config.annotation.StompEndpointRegistry; |
||||
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurationSupport; |
||||
|
||||
// tag::snippet[]
|
||||
@Configuration |
||||
public class WebSocketConfiguration extends WebSocketMessageBrokerConfigurationSupport { |
||||
|
||||
@Override |
||||
public void registerStompEndpoints(StompEndpointRegistry registry) { |
||||
registry.addEndpoint("/sockjs").withSockJS() |
||||
// Set the streamBytesLimit property to 512KB (the default is 128KB -- 128 * 1024)
|
||||
.setStreamBytesLimit(512 * 1024) |
||||
// Set the httpMessageCacheSize property to 1,000 (the default is 100)
|
||||
.setHttpMessageCacheSize(1000) |
||||
// Set the disconnectDelay property to 30 property seconds (the default is five seconds -- 5 * 1000)
|
||||
.setDisconnectDelay(30 * 1000); |
||||
} |
||||
|
||||
// ...
|
||||
} |
||||
// end::snippet[]
|
||||
|
||||
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.websocket.websocketfallbackxhrvsiframe; |
||||
|
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.messaging.simp.config.MessageBrokerRegistry; |
||||
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; |
||||
import org.springframework.web.socket.config.annotation.StompEndpointRegistry; |
||||
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; |
||||
|
||||
// tag::snippet[]
|
||||
@Configuration |
||||
@EnableWebSocketMessageBroker |
||||
public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer { |
||||
|
||||
@Override |
||||
public void registerStompEndpoints(StompEndpointRegistry registry) { |
||||
registry.addEndpoint("/portfolio").withSockJS() |
||||
.setClientLibraryUrl("http://localhost:8080/myapp/js/sockjs-client.js"); |
||||
} |
||||
|
||||
// ...
|
||||
|
||||
@Override |
||||
public void configureMessageBroker(MessageBrokerRegistry registry) { |
||||
// Configure message broker...
|
||||
} |
||||
} |
||||
// end::snippet[]
|
||||
|
||||
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.mvccorsglobal |
||||
|
||||
import org.springframework.context.annotation.Configuration |
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry |
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer |
||||
|
||||
// tag::snippet[] |
||||
@Configuration |
||||
class WebConfiguration : WebMvcConfigurer { |
||||
|
||||
override fun addCorsMappings(registry: CorsRegistry) { |
||||
registry.addMapping("/api/**") |
||||
.allowedOrigins("https://domain1.com", "https://domain2.com") |
||||
.allowedMethods("GET", "PUT") |
||||
.allowedHeaders("header1", "header2", "header3") |
||||
.exposedHeaders("header1", "header2") |
||||
.allowCredentials(true) |
||||
.maxAge(3600) |
||||
|
||||
// Add more mappings... |
||||
} |
||||
} |
||||
// end::snippet[] |
||||
|
||||
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.webmvc.mvccontroller.mvcannrequestmappingregistration |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired |
||||
import org.springframework.context.annotation.Configuration |
||||
import org.springframework.web.bind.annotation.RequestMethod |
||||
import org.springframework.web.servlet.mvc.method.RequestMappingInfo |
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping |
||||
|
||||
// tag::snippet[] |
||||
@Configuration |
||||
class MyConfiguration { |
||||
|
||||
// Inject the target handler and the handler mapping for controllers |
||||
@Autowired |
||||
fun setHandlerMapping(mapping: RequestMappingHandlerMapping, handler: UserHandler) { |
||||
|
||||
// Get the handler method |
||||
val info = RequestMappingInfo.paths("/user/{id}").methods(RequestMethod.GET).build() |
||||
|
||||
// Get the handler method |
||||
val method = UserHandler::class.java.getMethod("getUser", Long::class.java) |
||||
|
||||
// Add the registration |
||||
mapping.registerMapping(info, handler, method) |
||||
} |
||||
} |
||||
// end::snippet[] |
||||
|
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.webmvc.mvccontroller.mvcannrequestmappingregistration |
||||
|
||||
class UserHandler { |
||||
|
||||
fun getUser(id: Long) { |
||||
// ... |
||||
} |
||||
} |
||||
|
||||
@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.webmvcfnrunning |
||||
|
||||
import org.springframework.context.annotation.Bean |
||||
import org.springframework.context.annotation.Configuration |
||||
import org.springframework.http.converter.HttpMessageConverters |
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry |
||||
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry |
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer |
||||
import org.springframework.web.servlet.function.RouterFunction |
||||
|
||||
// tag::snippet[] |
||||
@Configuration |
||||
class WebConfiguration : WebMvcConfigurer { |
||||
|
||||
@Bean |
||||
fun routerFunctionA(): RouterFunction<*> { |
||||
TODO() |
||||
} |
||||
|
||||
@Bean |
||||
fun routerFunctionB(): RouterFunction<*> { |
||||
TODO() |
||||
} |
||||
|
||||
override fun configureMessageConverters(builder: HttpMessageConverters.ServerBuilder) { |
||||
TODO() |
||||
} |
||||
|
||||
override fun addCorsMappings(registry: CorsRegistry) { |
||||
TODO() |
||||
} |
||||
|
||||
override fun configureViewResolvers(registry: ViewResolverRegistry) { |
||||
TODO() |
||||
} |
||||
} |
||||
// end::snippet[] |
||||
|
||||
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.websocket.websocketfallbacksockjsclient |
||||
|
||||
import org.springframework.context.annotation.Configuration |
||||
import org.springframework.web.socket.config.annotation.StompEndpointRegistry |
||||
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurationSupport |
||||
|
||||
// tag::snippet[] |
||||
@Configuration |
||||
class WebSocketConfiguration : WebSocketMessageBrokerConfigurationSupport() { |
||||
|
||||
override fun registerStompEndpoints(registry: StompEndpointRegistry) { |
||||
registry.addEndpoint("/sockjs").withSockJS() |
||||
// Set the streamBytesLimit property to 512KB (the default is 128KB -- 128 * 1024) |
||||
.setStreamBytesLimit(512 * 1024) |
||||
// Set the httpMessageCacheSize property to 1,000 (the default is 100) |
||||
.setHttpMessageCacheSize(1000) |
||||
// Set the disconnectDelay property to 30 property seconds (the default is five seconds -- 5 * 1000) |
||||
.setDisconnectDelay(30 * 1000) |
||||
} |
||||
|
||||
// ... |
||||
} |
||||
// end::snippet[] |
||||
|
||||
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
/* |
||||
* Copyright 2002-present the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.docs.web.websocket.websocketfallbackxhrvsiframe |
||||
|
||||
import org.springframework.context.annotation.Configuration |
||||
import org.springframework.messaging.simp.config.MessageBrokerRegistry |
||||
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker |
||||
import org.springframework.web.socket.config.annotation.StompEndpointRegistry |
||||
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer |
||||
|
||||
// tag::snippet[] |
||||
@Configuration |
||||
@EnableWebSocketMessageBroker |
||||
class WebSocketConfiguration : WebSocketMessageBrokerConfigurer { |
||||
|
||||
override fun registerStompEndpoints(registry: StompEndpointRegistry) { |
||||
registry.addEndpoint("/portfolio").withSockJS() |
||||
.setClientLibraryUrl("http://localhost:8080/myapp/js/sockjs-client.js") |
||||
} |
||||
|
||||
// ... |
||||
|
||||
override fun configureMessageBroker(registry: MessageBrokerRegistry) { |
||||
// Configure message broker... |
||||
} |
||||
} |
||||
// end::snippet[] |
||||
|
||||
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
<!-- tag::snippet[] --> |
||||
<beans xmlns="http://www.springframework.org/schema/beans" |
||||
xmlns:mvc="http://www.springframework.org/schema/mvc" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation=" |
||||
http://www.springframework.org/schema/beans |
||||
https://www.springframework.org/schema/beans/spring-beans.xsd |
||||
http://www.springframework.org/schema/mvc |
||||
https://www.springframework.org/schema/mvc/spring-mvc.xsd"> |
||||
|
||||
<mvc:cors> |
||||
|
||||
<mvc:mapping path="/api/**" |
||||
allowed-origins="https://domain1.com, https://domain2.com" |
||||
allowed-methods="GET, PUT" |
||||
allowed-headers="header1, header2, header3" |
||||
exposed-headers="header1, header2" |
||||
allow-credentials="true" |
||||
max-age="123" /> |
||||
|
||||
<mvc:mapping path="/resources/**" |
||||
allowed-origins="https://domain1.com" /> |
||||
|
||||
</mvc:cors> |
||||
|
||||
</beans> |
||||
<!-- end::snippet[] --> |
||||
|
||||
Loading…
Reference in new issue