본문 바로가기

Programming

(111)
DAY 155. Spring 로그인 기능 1. HttpSession과 Model 객체를 활용한 방식 ▶ 로그인 처리 1) Model - 컨트롤러가 비즈니스 로직을 처리하고 만들어진 데이터를 Dispatcher Servlet에게 전달하는데 그 데이터를 Model이라고 부른다. - 컨트롤러에서 데이터를 View로 전달하고자 할 때 사용하는 객체이다. - 전달하고자 하는 데이터를 맵(key, value)로 형태로 담을 수 있다. (addAttribute() 활용) - Model 객체의 scope는 Request(하나의 요청이 완료될 때 까지만 유지되는 영역)이다. 01. MemberServiceImpl.java @Service public class MemberServiceImpl implements MemberService{ @Autowired p..
DAY 154. Spring 암호화 00. 메이븐 레파지토리에서 "spring security" 검색 모두 5.6.1 버전으로 3개를 pom.xml 파일에 추가한다. Alt + F5로 메이븐 업데이트 하고, Pakage Explorer에 Maven Dependencies 보면 이렇게 확인할 수 있다. 01. 스프링에서 제공하는 암호화 모듈 사용하기 https://ko.wikipedia.org/wiki/Bcrypt bcrypt - 위키백과, 우리 모두의 백과사전 bcrypt 파일 암호화 유틸리티에 대해서는 블로피시 문서를 참고하십시오. bcypt는 블로피시 암호에 기반을 둔 암호화 해시 함수로서 Niels Provos와 David Mazières가 설계하였으며 1999년 USENIX에서 발표되 ko.wikipedia.org ** salt :..
DAY 153. Spring MVC 패턴 - 회원 조회 Mapper Interface 방식으로 회원을 조회해보자. - MyBatis 3.0부터 지원하는 기능이다. 00. MemberDao.java -> MemberMapper.java 로 이름 변경 앞으로 dao를 mapper라고 부를 것이다. @Mapper public interface MemberMapper { Member findMemberById(@Param("id) String id); } @Mapper 어노테이션을 붙이고 인터페이스 이름도 MemberMapper로 변경! 01. mybatis-context.xml 추가 02. MemberServiceImpl.java @Service public class MemberServiceImpl implements MemberService{ //@Autowi..
Day 151. Spring MVC - 프로젝트 만들기 개요 00. Spring MVC - 클라이언트 화면을 표현하기 위한 View와 서비스를 수행하기 위한 개발 로직을 나누는 패턴이다. - Model, View, Controller 사이의 의존 관계를 DI 컨테이너에서 관리하여 웹 애플리케이션을 쉽게 구현, 개발할 수 있다. ※ Spring MVC 요청 처리 과정 클라이언트(웹 브라우저, 사용자)에서 요청(Request)을 보낸다. Dispatcher Servlet이 앞단에서 모든 요청을 받는다. => 프론트 컨트롤러 패턴이 적용되어있다. 이 때, 해당하는 요청이 어느 Controller가 처리해야 할지 모른다 Handler Mapping 객체한테 "이 요청은 어느 Controller가 처리하면 돼?" 라고 묻고 ""XXX Controller에서 처리하면 돼" ..
DAY 150. Spring Annotation Annotation - JDK5부터 추가된 기능으로 자바 코드에 추가적인 정보를 제공하는 메타데이터이다. - 비즈니스 로직에 영향을 주지는 않지만, 컴파일 과정에서 유효성 체크, 코드를 어떻게 컴파일하고 처리할지 알려주는 정보를 제공한다. - 어노테이션을 클래스, 메소드, 변수, 매개변수 등에 추가할 수 있다. 어노테이션으로 Spring AOP 구현 방식 테스트를 진행하는 실습을 해보자. - 어노테이션 기반이여도 Aspect 역할하는 클래스는 Bean으로 등록되어야 한다. - AspectJ 어노테이션을 사용한 Aspect 적용을 위한 프록시 설정 (어노테이션 기반으로 AOP를 적용할 수 있도록 활성화 하는 태그) - XML 설정 파일에 다음과 같이 설정한다. - autoporxy 설정을 추가하면, 클래스..
DAY 149. Spring AOP(Aspect Oridented Programming) Spring AOP(Aspect Oridented Programming) 관점 지향 프로그래밍 - 일반적으로 사용하는 클래스(Service, Dao) 에서 중복되는 공통 코드 부분(commit, rollback, log, security 처리) 을 별도의 영역으로 분리하고 - 코드가 실행되기 전이나 이 후 시점에 해당 코드를 붙여 넣음으로써 소스 코드의 중복을 줄이고, 필요할 때마다 가져다 사용할 수 있게 객체화하는 기술 - 한 애플리케이션의 여러 서비스에 걸쳐져 있는 기능 (= Corss-cutting Concern : 횡단 관점, 횡단 관심사) 를 분리하는 기능이다. - 궁극적으로 결합도를 낮추는 데 목적과 의의가 있다. - 개발자는 서비스에 집중할 수 있도록 한다. 동작 구조 & 용어 ▶ Aspec..
DAY 148. Spring DI - Annotation Spring DI - Annotation @Annotation 방식 xml 파일에는 구동시킬 필수 요소만 작성하고 소스코드에 Annotation으로 표시하여 구동하는 방식 (필수 요소 = ) ▶ @Annotation 종류 - Bean 등록 시 사용 @Component 객체(컴포넌트)를 나타내는 일반적인 타입으로 태그와 동일한 역할 내가 으로 만들고 싶은 클래스 위에 어노테이션을 붙인다. xml → java → @Bean @Annotation → @Component ▶ @Annotation 종류 - 의존성 주입 시 사용 @Autowired - 정밀한 의존 관계 주입(DI)이 필요한 경우에 유용하다. - 필드 변수, setter 메소드, 생성자, 일반 메소드에 적용이 가능하다. - 의존하는 객체를 주입할 때..
DAY 147. Spring DI(Dependency Injection) 의존성 주입 Spring DI(Dependency Injection) IoC 구현의 핵심 기술이다. 사용하는 객체를 직접 생성해서 만드는 것이 아니라, 컨테이너가 빈의 설정 정보를 읽어와서 자동으로 해당 객체에 연결하는 것이다. 이렇게 의존성을 주입 받게 되면 해당 객체를 수정해야 할 상황이 발생했을 때, 소스 코드의 수정을 최소화 할 수 있다. 객체 간의 종속 관계 (결합도) 한 클래스에서 필드 객체를 생성할 때 발생하는 두 객체 간의 관계를 말하며, 각 객체 간의 내용이 수정될 경우 영향을 미치는 정도를 말한다. 하나의 클래스가 변경되면, 두 개의 객체가 서로 연관 관계가 있다고 가정할 경우, 하나의 클래스를 수정하면 참조하고 있는 다른 클래스도 수정해야하는 경우가 발생하는데, 이런 경우를 객체 간의 결합도가 높..