提交 9a522946 编写于 作者: S Sam Brannen

Backport tests for gh-23985

上级 268d0295
/*
* Copyright 2002-2019 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.web.servlet.mvc.annotation;
import java.util.List;
import org.junit.Test;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.mock.web.test.MockServletContext;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.context.annotation.RequestScope;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.method.ControllerAdviceBean;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import static org.junit.Assert.assertEquals;
/**
* Integration tests for request-scoped {@link ControllerAdvice @ControllerAdvice} beans.
*
* @author Sam Brannen
* @since 5.1.12
*/
public class RequestScopedControllerAdviceIntegrationTests {
@Test // gh-23985
public void loadContextWithRequestScopedControllerAdvice() {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.setServletContext(new MockServletContext());
context.register(Config.class);
context.refresh();
// Until gh-24017 is fixed, we expect the RequestScopedControllerAdvice to show up twice.
List<ControllerAdviceBean> adviceBeans = ControllerAdviceBean.findAnnotatedBeans(context);
assertEquals(2, adviceBeans.size());
ControllerAdviceBean adviceBean1 = adviceBeans.get(0);
assertEquals(RequestScopedControllerAdvice.class, adviceBean1.getBeanType());
assertEquals(42, adviceBean1.getOrder());
ControllerAdviceBean adviceBean2 = adviceBeans.get(1);
assertEquals(RequestScopedControllerAdvice.class, adviceBean2.getBeanType());
assertEquals(42, adviceBean2.getOrder());
context.close();
}
@Configuration
@EnableWebMvc
static class Config {
@Bean
@RequestScope
RequestScopedControllerAdvice requestScopedControllerAdvice() {
return new RequestScopedControllerAdvice();
}
}
@ControllerAdvice
@Order(42)
static class RequestScopedControllerAdvice implements Ordered {
@Override
public int getOrder() {
return 99;
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册