본문 바로가기
728x90

개발/Spring48

[Spring] 데이터 액세스 층의 설계와 구현 4.1 데이터 액세스 층과 스프링 - 데이터 액세스 층은 데이터 액세스 처리를 비즈니스 로직 층에서 분리하여 따로 만들어준 층 - 데이터 액세스 처리와 비즈니스 로직이 섞여있으면 유지보수가 어렵고, 코드 가독성이 떨어진다. 4.1.1 DAO 패턴이란? - DAO 패턴은 데이터의 취득, 변경 등 데이터 액세스 처리를 DAO라고 하는 오브젝트로 분리하는 패턴 - 데이터 액세스 방식이 바뀌어도 DAO만 변경하면 된다. - DAO 클래스는 DB의 테이블별로 만든다. 4.1.2 자바의 데이터 액세스 기술과 스프링의 기능 - 자바의 데이터 액세스 기술 (1) JDBC (2) 하이버네이트 & JPA 등 고성능 ORM 프레임워크 (3) MyBatis(iBATIS) (4) 독자 개발한 프레임 워크 등 - 스프링은 여러 .. 2022. 7. 20.
[Spring] Filter, Interceptor 스프링 시큐리티를 공부하면서 필터, 인터셉터에 대해 더 자세한 공부를 하게 됐다. 클라이언트에서 요청이 있을 경우 Filter -> InterCeptor -> AOP -> InterCeptor -> FIlte이다. 1. 서버를 실행시켜 서블릿이 올라오는 동안 init() 실행, 그 후 doFilter() 실행 2. Controller에 들어가기 전 preHandler 실행 3. Controller에서 나와 postHandler, after Completion, doFilter 순으로 진행 4. 서블릿 종료 시 destory가 실행 Filter - 필터는 요청과 응답을 한번 필터링 해주는 역할 - 필터는 스프링 컨텍스트 외부에 존재 - 인코딩 변환처리, xss방어 들의 요청에 대한 처리로 사용된다. - 필.. 2022. 7. 10.
[Spring] 스프링 시큐리티 (2) 7.4 스프링 시큐리티의 기본 구조 7.4.1 SecurityContext, Authentication, GrantedAuthority - SecurityContext는 인증, 인가 정보를 관리하는 오브젝트 - SecurityContext는 Authentication 오브젝트를 소유하고 있음 - GrantedAuthority는 인가 정보를 나타내는 오브젝트 7.4.2 AuthenticationManager와 AccessDecisionManager - AuthenticationManager 오브젝트는 인증 처리를 실시하는 오브젝트 인증: 사용자의 신원을 검증하는 행위로서 보안 프로세스에서 첫 번째 단계 - AccessDecisionManager는 인가 처리를 실시하는 오브젝트 인가: 사용자에게 특정 리소스.. 2022. 7. 5.
[Spring] 스프링 시큐리티 (1) 7.3 스프링 시큐리티 - 인증, 인가 기능의 공통 기반 제공 - 웹앱에서 인증, 인가를 구현하기 위한 각종 필터 클래스 제공 - Bean 정의 파일이나 프로퍼티 파일, 데이터베이스, LDAP 등, 여러 리소스로부터 인증, 인가 정보 취득 가능 - HTTP BASIC 인증이나 화면에서의 폼 인증 등, 웹앱에서 일반적으로 선택되는 인증 지원 - 메소드 호출에 대한 액세스 제어에 AOP 사용 가능 - 시큐리티 공격에 대한 방어 기능을 제공(CSRF 대책, Session Fixation 대책 등) 7.3.1 스프링 시큐리티의 설정 파일 - Bean 정의 파일(XML) - JavaConfig 파일 @EnableWebSecurity protected class SecurityConfig extends WebSec.. 2022. 7. 4.
[Spring] 스프링 AOP (2) @Configuration @EnableAspectAutoProxy public class AppConfig { @Bean public ProductServiceImpl productService() { return new ProductServiceImpl(); } @Bean public ProductDaoImpl productDao() { return new ProductDaoImpl(); } @Bean public MyFirstAspect myFirstAspect() { return new MyFirstAspect(); } } 스프링 코어 중 다른 하나인 DIxAOP 컨테이너의 AOP에 대해 알아보기 3.2.2 어노테이션으로 어드바이스 만들기 Before 어드바이스, After 어드바이스 - 어노테이.. 2022. 7. 4.
[Spring] 스프링 AOP (1) 스프링 코어 중 다른 하나인 DIxAOP 컨테이너의 AOP에 대해 알아보기 - DI 컨테이너란 오브젝트 사이에 밀접한 의존 관계를 가지지 않게 하고, 인터페이스에 의한 약한 결합을 쉽게 만들어 소프트웨어의 컴포넌트화를 촉진하며, 오브젝트의 생명 주기를 관리할 수 있게 하는 것 - DI 컨테이너만으로는 온전한 아키텍처를 개발할 수 없음 - AOP가 있으면 로깅이나 트랜잭션 등의 처리를 따로 관리할 수 있게 구현하는 기술 3.1 AOP란 - AOP란 업무 등 특정 책임이 있는 클래스 같이 본질적이지 않은 처리들을 밖으로 꺼내는 기술 3.1.1 AOP 용어 애스펙트(Aspect) - 횡단 관심사의 동장과 그 횡단 관심사를 적용하는 소스 코드상의 포인트를 모은 것 어드바이스(Advice) - 조인 포인트에서 실.. 2022. 7. 1.
[Spring] 스프링 DI (2) 스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명 2.5 JavaConfig를 이용한 DI - XML파일 작성 대신에 Java 코드를 작성한다. 2.5.1 예제를 이용한 JavaConfig https://devhooney.tistory.com/9 스프링 DI (1) 스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명 2.1 DI란 - DI는 '의존 관계의 주입'이다. - 오브젝트 사이의 의존 관계를 만드는 것. -> 오브젝트 devhooney.tistory.com - 이 글에서 작성했던 ProductService, ProductDao 등의 샘플을 JavaConfig로 수정한다. - AppConfi.. 2022. 6. 29.
[Spring] 스프링 DI (1) 스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명 2.1 DI란 - DI는 '의존 관계의 주입'이다. - 오브젝트 사이의 의존 관계를 만드는 것. -> 오브젝트의 인스턴스 변수에 그 오브젝트가 이용할 오브젝트를 설정한다는 의미. - 학술적으로 어떤 오브젝트가 이용할 오브젝트를 주입 혹은 인젝션(인스턴스 변수에 설정)한다는 의미. - DI를 구현하는 컨테이너는 클래스의 인스턴스화 등의 생명 주기 관리 기능이 있는 경우가 많다. 2.2 DI를 사용할 곳 - 보통 컨트롤러, 서비스, DAO의 의존 관계를 구축할 때 2.3 어노테이션을 이용한 DI 2.3.1 기본 - @Autowired와 @Component - ProductService 인터페이스 publ.. 2022. 6. 29.
[Spring] @ResponseBody가 null만 가져올 때 단순한 API인데, DTO에 데이터가 null로 들어온다... - 회원가입 기능을 개발하는데, DTO로 데이터를 받으려 했으나 잘 되지 않는다. // Java @PostMapping("/join") public ResponseEntity join(@RequestBody TUser tUser) { System.out.println(tUser); long result = eltService.join(tUser); ... ... } // Javascript const result = await fetch("/xxx/xxx/join", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) }).th.. 2022. 6. 28.
728x90