這裏是我的類:「需要一個bean,但2被發現」 - 春
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
import com.mportal.ec.exception.ApplicationSpecificException;
@ControllerAdvice
public class DefaultExceptionHandler extends ResponseEntityExceptionHandler {
@Autowired
private final MessageSourceAccessor messageSource;
public DefaultExceptionHandler(MessageSourceAccessor messageSource) {
Assert.notNull(messageSource, "messageSource must not be null");
this.messageSource = messageSource;
}
//expected Exceptions
@ExceptionHandler(ApplicationSpecificException.class)
protected ResponseEntity<Object> handleApplicationSpecificException(final RuntimeException ex, final WebRequest request) {
final String bodyOfResponse = "This should be application specific";
return handleExceptionInternal(ex, bodyOfResponse, new HttpHeaders(), HttpStatus.NOT_FOUND, request);
}
//unexpected Exceptions
@ExceptionHandler(Exception.class)
protected ResponseEntity<Object> handleException(final RuntimeException ex, final WebRequest request) {
final String bodyOfResponse = "This should be application specific";
return handleExceptionInternal(ex, bodyOfResponse, new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR, request);
}
}
在我的項目,我使用的是彈簧啓動/休眠/基於Java的配置,並試圖實現一個異常處理機制。我使用從StackOverflow得到的示例代碼,並瞭解在春季處理異常的最佳方法。 但是當我運行代碼時,我得到這個錯誤。但是當我停止使用「MessageSourceAccessor」時,錯誤消失。
Description:
Parameter 0 of constructor in com.mportal.ec.error.DefaultExceptionHandler required a single bean, but 2 were found:
- linkRelationMessageSource: defined by method 'linkRelationMessageSource' in class path resource [org/springframework/hateoas/config/HateoasConfiguration.class]
- resourceDescriptionMessageSourceAccessor: defined by method 'resourceDescriptionMessageSourceAccessor' in class path resource [org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.class]
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
我該如何解決?
@MickaëlB我該怎麼做?因爲我沒有創建這些bean,我該如何處理? – Harshakj89