Spring Framework 자바 엔터프라이즈 개발을 편하게 해주는 경량급 오픈소스 애플리케이션 프레임워크 Lightweight Java Application Framework 목표 : POJO(Plain Old Java Object)기반의 Enterprise Application 개발을 쉽고 편하게 할 수 있도록 함 Java Applic...
helloController hello.html 동적 환경 그림 웹브라우저에서 localhost:8080/hello 라고 입력 스프링부트에서 내장하고 있는 톰캣 서버는 /hello을 spring에게 보냄 spring은 helloController의 hello와 http url의 hello가 매칭 되는 것을 확인 해당 컨트롤러(helloControll...
1. 정적 컨텐츠 : 서버에서 하는 것 없이 파일을 그대로 웹브라우저에 띄우는 것 내장 톰캣 서버가 hello-static.html이라는 요청이 왔다고 스프링 컨테이너에 넘김 spring은 먼저 우선순위가 높은 controller에서 hello-static관련 컨트롤러가 있는지 확인 없으면 resources:static/hello-static.html을 ...
- 비즈니스 요구사항 > - 회원 도메인과 리포지토리 만들기 > - 회원 리포지토리 테스트 케이스 작성 > - 회원 서비스 개발 > - 회원 서비스 테스트 비즈니스 요구사항 정리 데이터 : 회원ID , 이름 기능 : 회원 등록 및 조회 아직 데이터 저장소가 선정되지 않음(가상 시나리오) 일반적인 웹 애플리케이션 계층 구조 ! 컨트롤러 : 웹 MVC의 ...
- 비즈니스 요구사항 >- 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 패키지 구조 1. domain패키지 안 Member 클래스 생성 여기서 id는 고객이 입력하는 id가 아니라 시스템이 입력하는 id임 2. 회원 객체 저장소 인터페이스 작성 여기서 나온 Optional은 null을 처...
- 비즈니스 요구사항 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 개발한 기능을 실행해서 테스트 할 때 main 메소드를 통해 실행하거나, 웹 애플리케이션의 컨트롤러를 통해 해당 기능을 실행함 하지만 이러한 방법은 준비하고 실행하는데 오래걸리고, 반복 실행하기 어렵고 여러 테스트를 한번에 실행하기 어렵...
- 비즈니스 요구사항 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성** 회원 서비스 개발 회원 서비스 서비스 : 회원 리포지토리와 도메인을 활용해 실제 비즈니스 로직을 작성 파일 구조 회원가입 서비스 비즈니스 로직 구성 당시 중복 회원은 받지 않겠다는 설정 있었음 그래서 validateDuplicateMember라는 메소드를 통...
Spring MVC구조와 동작과정을 살펴보도록 하겠습니다. MVC 1. Model 애플리케이션의 정보(데이터) 모든 데이터 정보를 가공하여 가지고 있는 컴포넌트 (View에 출력할 데이터를 담아둔다.) Model은 사용자가 편집하고자 하는 모든 데이터를 가지고 있어야 하지만 *View나 Controller에 대해서는 어떤 정보도 알 수 없어야한다.. ...
IoC 제어의 역전 객체의 생성, 생명 주기의 관리 모든 객체에 대한 제어권이 바뀌었다는 의미이다. 좀 더 쉽게 말하면 객체의 생성과 소멸, 객체간 관계와 같은 제어를 개발자가 아닌 외부로 위임해 여러 프레임워크나 컨테이너가 수행하도록 하는 설계 원칙이다. >제어의 역전에서는 오브젝트가 사용할 오브젝트를 결정하지도, 생성하지도 않는다. 애플리케이션의 제...
지난 글에서 객체의 생성을 책임지고 의존성 관리하는 IoC Container 그리고 DL, DI에 대해 알아보았다. DI는 참 쉬우면서도 어려운 것 같다. Spring은@Autowired 어노테이션을 이용하여 다양한 의존성 주입 방법을 제공하는데 이를 통해 객체간의 결합도를 느슨하게 만들고 코드의 재사용성을 높일 수 있다. >@Autowired는 Spri...
오늘은 DI에 이어 또 어려운 AOP에 대해 정리했다. AOP : Aspect Oriented Programming AOP는 관점 지향 프로그래밍 이라는 뜻으로 어떤 로직을 핵심적인 기능(Core Concerns)과 부가적인 기능(Cross-cutting Concerns)으로 분리하고 각각 모듈화 하는 것이다. 개념은 이런데 너무 어려워서 지금부터 하나하...
오늘은 포조 포조에 대해 알아봅시다. 나는 개념을 잡을 때 왜 이게 필요했는지 배경부터 살피는 편이라 EJB부터 시작해보자>🥲 : 특정 기술과 환경에 종속되어 의존하게 된 자바 코드는 가독성이 떨어져 유지보수가 어렵고 확장성이
이전 글에서 만들었던 컨트롤러에 아래 메소드들을 추가한다. /user면 user /admin이면 admin 잘 나오는데 /login을 url로 입력하면 우리가 원하는 login이 아닌 시큐리티 로그인 창이 뜬다. > Security가 login을 가로챘다. 이번에는 이 문제를 해결하고 user 페이지는 user만 접근가능하도록 admin페이지는 a...
이전 글에서 시큐리티를 적용하여 사용자가 입력한 암호를 인코딩하는 작업을 진행하였다. 이번 글에서는 이제 이 암호화 된 암호로 로그인하는 코드를 구현해보자!! SecurityConfig 수정 // "/login"이라는 url이 호출되면 시큐리티가 낚아채 대신 로그인을 진행해준다. 그래서 Controller에 /login을 호출하는 메소드를 만들지않아도 ...
이번 글에서는 user에 이어 admin과 manager도 권한처리를 해보자. 회원가입 manager라는 이름과 admin이라는 이름으로 일단 회원가입을 진행한다. User role을 디폴트 값으로 user로 등록했기 때문에 이를 일단 수정해준다. 컬럼 수정 이렇게하고 다시 로그인 페이지로 가서 매니저로 로그인을 하면 먼저 인덱스 페이지가 나오고 !...
웹 애플리케이션을 개발하다보면 필수적으로 개발해야하는 요소들이 있다. 사용자 인증 권한 검사(인가) 보안 XSS, CORS 로깅 이미지 압축 및 데이터 형식 변환 Filter나 Interceptor은 위 요소들에 대한 책임 및 구현의 역할을 한다. 이를통해 들어온 요청이 DispatcherServlet에 전달되기 전에 헤더를 검사해 인증 토큰이...
스프링 컨테이너 스프링 컨테이너는 스프링에서 자바 객체들을 관리하는 공간을 말한다. 자바 객체를 스프링에서 빈(Bean)이라 하는데 스프링 컨테이너는 이 빈들의 생명주기를 관리한다. (또한 Bean을 관리하기 위해 IoC를 사용한다.) Spring Container의 종류에는 BeanFactory와 이를 상속한 ApplicationContext가 존재한다...
자바 프로그래밍을 처음 배울 때 기본적으로 JSP를 배운다. JSP는 일반적인 Java MVC 구조에서 View의 역할을 하는데 요즘 Spring에서는 View로 Thymeleaf를 더 추구한다고 한다! JSP vs Thymeleaf JSP의 경우에는 Servlet 형태로 변환되어 실행된다. Servlet은 자바 소스이기 때문에 JSP에서 java 코드를...
Transaction 트랜잭션이란 DB의 상태를 변화시키기 위해 수행하는 작업의 단위를 의미한다. > 상태를 변화시킨다는 것 = SQL 질의어를 통해 DB에 접근하는 것 ex) SELECT INSERT DELETE UPDATE 에를 들어, 사용자 A가 B에게 만원을 송금하고자 한다면 아래와 같은 과정을 거칠 것이다. A의 계좌에서 만원을 차감한다 >...
프로젝트 카카오 페이 구현 전, Html로 결제 테스트 한 내용을 적은 글 사전 준비사항 : kakaoDeveloper에 localhost 도메인 등록되어 있는지 확인하기 등록 안하면 아래와 같은 에러남 구현하기 전, 카카오페이 문서 에서 요청시 필수로 들어가야 할
스프링 프레임워크에서 로그 레벨은 쉽게 말해 로그 메시지 중요도를 나타낸다.로그 정보를 통해 우리는 애플리케이션이 실행되는 동안 일어나는 동작이나 에러 발생 시,해당 에러가 어쩌다 발생했는지 좀 더 상세하게 확인할 수 있다.로그 종류는 크게 6가지로 나뉘어져 있다.가장
Maven은 Java Project에서 없어서는 안 될 의존성 관리 도구다.Maven Wrapper가 설정된 프로젝트는 컴퓨터에 maven이 없어도 빌드가 가능한데 이번 글에서는 Maven Wrapper에 대해 알아보자.mvnw(maven wrapper)는 Maven을
Flutter - Spring 카카오 로그인 Flutter - Spring 카카오 로그인 처리 프로세스를 알아보자. 위 그림은 사용자, Flutter 앱, Kakao SDK, Kakao 서버, Spring 서버, 그리고 데이터베이스 간의 상호작용을 나타낸다. 로그인 프로세스 단계별 설명 사용자 액션 시작 사용자가 앱에서 카카오 로그인 버튼을 클...
팀 프로젝트를 진행하면서 Flutter와 Spring Boot로 OAuth2.0 인증을 구현하게 되었다. 웹과 모바일의 인증 처리 방식이 달라 처음에 조금 난관이 있었다.로그인 플로우의 차이웹: 브라우저에서 직접 OAuth 제공자의 로그인 페이지로 리다이렉트모바일: 네