spring api 에러 처리
API 예외처리는 단순히 오류 페이지를 반환하는 것보다 서버간 통신 규약에 따라 오류 응답 스펙을 정해놓고, JSON (또는 XML등 ) 으로 데이터를 내려준다.
API 예외 처리도 스프링 부트가 기본으로 제공하는 BasicErrorController 을 사용할 수 있긴하지만, 서버간 통신규약에 맞게 json을 반환하려면 customizing 할 수 있어야 한다.
API 예외처리는 단순히 오류 페이지를 반환하는 것보다 서버간 통신 규약에 따라 오류 응답 스펙을 정해놓고, JSON (또는 XML등 ) 으로 데이터를 내려준다.
API 예외 처리도 스프링 부트가 기본으로 제공하는 BasicErrorController 을 사용할 수 있긴하지만, 서버간 통신규약에 맞게 json을 반환하려면 customizing 할 수 있어야 한다.
servlet의 예외 발생 방식
1 |
|
application 여러 로직에서 공통으로 포함되어 있는 로직을 공통 관심사 (cross-cutting concern)이라고 한다.
웹 앱과 관련된 (ex) 로그인 ) 공통 관심사를 처리하는데, 주로 servlet filter 나, spring interceptor를 사용한다.
TDD란?
배치 처리란?
기존에 DB connection을 만들어주기 위하여, 직접 DB-specific한 DriverManager로부터 DB connection을 가져왔으나, 실제로 java에서는 DB connection을 가져오는 기능과 여러가지 부가적인 기능을 추상화한 DataSource interface가 존재한다.
spring은 java annotaion 기반으로 DI 의존관계 설정 class를 만드는 것 이외에도 ,
xml을 활용하여 DI 의존관계 설정 class를 만드는 것을 지원한다.
xml의 이용할 경우 별도의 compile이 필요하지 않다는 장점을 가지고 있다.
annotaion의 @Configuration 이 <beans> tag, @Bean 이 <bean> tag와 대응된다.
@Bean에서 bean이름이 될 method name은 xml에서 <bean> tag 의 id attribute,
@Bean에서 bean Class type은 xml에서 <bean> tag의 class attribute 가 된다.
예를 들어
1 |
|
위 자바 코드는 아래의 xml 기반의 설정파일과 동일한 의미이다.
1 | <beans> |
다른 Bean 과의 관계설정은 xml에서
예를 들어
1 | public class UserDao{ |
위 자바 코드는 아래의 xml 기반의 설정파일과 동일한 의미이다.
1 | <beans> |
application context 를 xml 설정파일로 만드는 방법은 간단하다 다른 구체 class를 사용하면 된다.
1 | GenericXmlApplicationContext("applicationContext.xml"); |
최종적으로 현재 userDao 를 xml설정파일로 bean으로 등록하였다.
1 | <!-- applicationContext.xml --> |
1 | public static void main(String[] args) { |
Dependency Injection의 정의는 다음과 같다.
program run time 시에 의존관계를 맺는 대상인 dependent object 와 , 그것을 사용하는 주체인 client object를 연결시켜주는 작업
DI는 정리하면 다음과 같은 3 조건을 충족시키는 작업을 말한다.
토비의 spring
이전까지는 Spring 을 적용하지 않고, IoC에 대해서 살펴보았다.
지금부터는 Spring이 IoC를 어떤형태로 구현하였는지 살펴보겠다.
그전에 spring에서 사용하는 용어를 정리하면 다음과 같다.
: spring이 제어권을 가지고 직접 만들고 , 관계를 설정하는 객체
: Bean의 생성과 관계설정과 같은 제어를 담당하는 IoC 객체
(=이를 확장된 의미에서는 Application Context라고 한다.)