# 스프링의 장점 ## 1. 느슨한 결합 - 느슨한 결합이란 interface와 DI를 적절히 활용하여 객체간의 결합도를 낮추는 것. - [ 정리블로그 링크 ] ## 2. DI ( Dependency Injection ) - 의존관계 CLASS들의 객체 생성을 직접하지않고( new연산자 사용하지않고 ), 외부에서 대신 생성해줌으로서 코드변경 사항을 효율적으로 감소시킬 수 있다. - [ 정리블로그 링크 ] ## 3. IoC ( Inversion of Control ) - 기존에 자바 어플리케이션을 개발할 때, 자바 객체를 생성하고 서로간의 의존관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 어플리케이션에 있었다. - 그러나 Servlet, EJB등을 사용하는 경우 Servlet Container, EJB Container에게 제어권이 넘어가서 객체의 생명주기(라이프사이클)을 Container들이 전담하게 된다. - 이처럼 IoC에서 이야기하는 제어권의 역전이란 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다. - Spring의 IoC컨테이너는 일반적으로 ApplicationContext 인터페이스를 구현 한 클래스를 뜻한다. - [ 정리블로그 링크 ] ## 4. AOP ( Aspect Oriented Programming ) - AOP를 활용하면 비즈니스로직과 이외의 로직을 분리할 수 있다. - 이외의 로직은 보안,트랜잭션,로깅등의 작업이 있다. - 이외 로직들을 분리하는 것이 AOP의 방법론이다. - Proxy라는 도구를 사용해서 이외 로직들을 수행하면서 메인 프로세스를 호출하도록 제어할 수 있다. - [ 정리블로그 링크 ] ## 5. 스프링 활용하기 ### 1) SpringSecurity - 스프링 시큐리티는 스프링 기반의 어플리케이션의 보안(인증과 권한)을 담당하는 프레임워크. - 스프링 시큐리티는 보안과 관련해서 체계적으로 많은 옵션들로 이를 지원해줌. - Spring Security는 filter 기반으로 동작하기 때문에 spring MVC 와 분리되어 관리 및 동작한다. - [ 참조1 ] , [ 참조2 ] - SpringSecurity 따라해보기 [ 링크 ] ## 삽질이력
분류 이슈 내용 조치 내용
Annotation servlet클래스에서 String을 return하여 [ .jsp ] 페이지로 forwarding 기대하였으나, 화면에 출력됨.. [Detail]
Http Method 설정오류 로그인 에러메시지 Security의 Session > request.Attribute방식으로 바꾸던 중 화면에 데이터출력 오류 [Detail]
MyBatis MyBatis사용하면서 MapperLocation변경 시 BindingException... [Detail]
SpringSecurity 설정오류 loadUserByUsername 메서드 수행시 DAO클래스 의존성이 주입되지않아, DB정보를 조회하지 못함. [Detail]
SpringSecurity 설정오류 없는 계정의 ID로 로그인시도 하여 UsernameNotFoundException에러 처리를 예상했으나 BadCredentialsException로 예외처리 됨. [Detail]