이번 주에는 스프링 프레임워크의 기초에 대해 깊이 있게 공부했다. 스프링은 엔터프라이즈급 애플리케이션을 구축할 수 있는 강력한 프레임워크로, IoC와 DI를 통해 강력한 코드의 재사용성과 느슨한 결합도를 제공한다. 이러한 특성은 애플리케이션의 확장성과 유지보수성을 크게 향상시킨다.
테스트 코드는 코드의 품질을 보장하고, 버그를 빠르게 찾아 수정할 수 있게 도와준다. 스프링에서는 'given - when - then' 패턴을 사용하여 명확하고 이해하기 쉬운 테스트 코드를 작성할 수 있다. 이 패턴을 사용하면 테스트의 목적과 결과를 명확하게 이해할 수 있다.
스프링에서 관심사 분리는 매우 중요한 설계 원칙이다. 각 계층(Controller, Service, Repository)이 자신의 관심사만을 담당하도록 함으로써, 코드의 응집도를 높이고, 결합도를 낮추는 것이 가능하다. 이를 통해 코드의 유지보수성이 향상된다.
스프링 시큐리티는 스프링 기반의 애플리케이션의 보안(인증과 인가)을 담당하는 프레임워크다. 인증과 인가에 대한 다양한 기능을 제공하며, 필터 기반의 보안 처리, CSRF 방지, Session 관리 등의 기능도 제공한다.
스프링 프레임워크에서는 JPA를 사용하여 쉽게 CRUD 연산을 구현할 수 있다. JPA(Java Persistence API)는 자바 ORM(Object-Relational Mapping) 기술의 표준이다. ORM은 객체 지향 프로그래밍과 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 기술이다.
이번 주에는 스프링 프레임워크의 기초부터 보안, 테스트 코드 작성법, CRUD 구현까지 다양한 주제에 대해 학습했다. 이를 통해 스프링 프레임워크의 강력함을 다시 한 번 깨달았다.