여니의 프로그래밍 study/Spring & Spring Boot 63

[Spring] 컴포넌트 스캔 + 빈 라이브사이클과 범위 (Chapter 5~6)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 컴포넌트 스캔 : 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능 즉, 설정 클래스에 빈으로 등록하지 않아도 원하는 클래스를 빈으로 등록할 수 있도록 하는 기능이다. @Component는 해당 클래스를 스캔 대상으로 표시하며 클래스에 해당 어노테이션을 붙여줘야만 빈으로 등록해야하는 대상으로 인식된다. // 1 @Component public class MemberListPrinter{ private MemberDao memberDao; private MemberPrinter printer; } // 2 @Component("listPriner") public class MemberListPrinter{ private MemberDao..

[Spring] 의존 자동 주입 (Chapter 4)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 해당 게시글은 초보 개발자를 위한 스프링5 프로그래밍 입문 1. @Autowired , @Resource 의존 자동 주입 기능이 있는 어노테이션 @Autowired : Spring에서 지원하는 어노테이션으로 주입하려고 하는 객체의 타입이 일치하는지 찾고 객체를 자동으로 주입한다. 타입 탐색 일치하는 bean이 없을 경우 @Qualifier 어노테이션을 찾는다. 사용할 수 있는 위치는 멤버변수, setter 메소드 @Resource : Java에서 지원하는 어노테이션이다. name 속성의 이름을 기준으로 탐색 > 없으면 타입 > 타입도 없으면 @Qualifier 어노테이션의 유무를 찾아서 그 어..

[Spring] 스프링 DI (의존, 의존주입, 조립기) - 2

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 해당 게시글은 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 스프링을 이용한 객체 조립과 사용 (1) 스프링 사용 전, 설정 정보 클래스를 작성해야 함 -> 스프링이 어떤 객체를 생성하고 의존을 어떻게 주입할지에 관련하여 정의한 설정 정보들 @Configuration : 스프링 설정 클래스를 의미, 해당 어노테이션을 붙여야 스프링 설정 클래스로 인식함 @Bean : 해당 메서드가 생성한 객체를 스프링 빈이라고 설정함 예를 들어 memberDao() 메서드를 이용해서 생성한 빈 객체는 memberDao라는 이름으로 스프링에 등록된다. @Configuration public class AppCtx{ @Bean public MemberDao mem..

[Spring] 스프링 DI (의존, 의존주입, 조립기) - 1

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 해당 게시글은 초보 개발자를 위한 스프링5 프로그래밍 입문 1. 의존이란? A라는 클래스 내에서 B라는 클래스의 메서드를 실행할 때 A 클래스가 B 클래스에 의존한다고 한다. 즉, 의존이란 변경에 의해 영향을 받는 관계를 의미함 의존 객체 생성하는 방식 (1) 직접 의존 객체를 생성 > A 클래스 내에 B 클래스의 객체를 직접 new 연산자를 통해 생성하는 방식 public class MemberRegisterService { // 의존 객체를 직접 생성 private MemberDao memberDao = new MemberDao(); } // MemberRegisterService 객체를 생성하는 순간에 // MemberDao 객체도 생성된다..

[Spring] 스프링 시작하기 (빌드 관리 도구, 메이븐, 그래들, 빈 객체, 컨테이너)

참고 자료 : 초보 개발자를 위한 스프링5 프로그래밍 입문 해당 게시글은 초보 개발자를 위한 스프링5 프로그래밍 입문 chapter 2 . 스프링 시작하기 내용을 기반으로 작성되었습니다. 1.빌드 관리 도구 : 메이븐과 그래들은 프로젝트 빌드 관리 도구임. 빌드란? > 소스 코드(java 파일)를 실제 실행 가능한 형식으로 만드는 작업임 java 파일을 컴파일해서 class 파일로 변환하고, resource를 class 파일에서 참조할 수 있는 적절한 위치에 옮기는 등의 과정임 Build는 Compile + 그 외 작업 Run은 Build +실행 https://eboong.tistory.com/645 [Java] 자바 프로그램 실행 과정 및 동작 원리 (feat. JVM) 1. 컴파일이란? (Compil..

Spring Boot 소셜 로그인 구현 (3) | feat. kakaoTalk

https://eboong.tistory.com/653 SpringBoot 소셜 로그인 구현 (1) | feat. KakaoTalk https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 1. Kakao De eboong.tistory.com https://eboong.tistory.com/654 Spring Boot 소셜 로그인 구현 (2) | feat. kakaoTalk 1. 개인정보 가져오는 프로세스 진행 kauth.kakao.com/oauth/authorize?client_id={REST_AP..

Spring Boot 소셜 로그인 구현 (2) | feat. kakaoTalk

1. 개인정보 가져오는 프로세스 진행 kauth.kakao.com/oauth/authorize?client_id={REST_API_KEY}&redirect_uri={REDIRECT_URI}&response_type=code 이전 포스팅에서 만들었던 client_id와 redirect_url를 각각 넣어준다 (이때 대괄호는 모두 삭제함) 그리고 해당 url로 접속하면 아래와 같은 화면이 등장한다 (로그인 후) 동의하고 계속하기를 누르고 Url창을 확인해보면 redirect_url?code=?????와 같은 형태의 주소가 젹혀있다 포스트맨에서 접속여부를 테스트하기 위해 필요한 값은 ????에 해당하는 값이다. 이를 복사한 후 포스트맨으로 넘어간다. 2. 포스트맨으로 access token 발급받기 Acces..

SpringBoot 소셜 로그인 구현 (1) | feat. KakaoTalk

https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 1. Kakao Developers 홈페이지 접속 > 내 어플리케이션 2. 애플리케이션 추가하기 버튼 클릭 3. 앱이름 & 사업자명 입력, 약관 동의 후 저장 버튼 클릭 4. 앱키 정보는 따로 안전한 곳에 저장해두기 5. 카카오 로그인 카테고리 클릭 후 활성화 설정 ON으로 변경 6. Redirect URI 등록하기 -> 최초 등록 후 추후 수정 가능함. 여러개 추가하는 것도 가능함. 7. 카카오 로그인 > 동의항목 설정 -> 닉네임, 프로필사진..

Servlet에 대해 알아보자

서블릿은 클라이언트(웹 브라우저)와 서버(웹 어플리케이션 == was) 간의 통신을 처리하고 동적인 웹 페이지 생성, 데이터베이스 연동 등의 기능을 수행함 즉 서블릿이란 자바 웹 어플리케이션에서 동적인 처리를 수행하는 자바 클래스이고 HTTP 요청과 응답 프로토콜을 다루기 위한 API를 제공한다. WAS 내에 서블릿 컨테이너가 있고 서블릿 객체를 자동으로 생성 및 호출, 생명주기까지 관리해준다. 서블릿 컨테이너란 톰캣처럼 서블릿을 지원하는 WAS 를 의미한다. WAS에서 서블릿 컨테이너를 통해 서블릿을 실행시키고 HTTP 요청을 처리한다. 즉 서블릿 컨테이너가 해당 요청을 처리할 서블릿을 찾아서 실행시킨다. 요새는 서블릿 대신 스프림 프레임워크를 사용하는데, 스프링 프레임워크는 서블릿을 기반으로 구현되어..

Controller, Service, ServiceImpl, DAO, VO에 대해 알아보자

Controller -> 클라이언트의 요청을 받아 해당 요청을 처리하는 로직을 작성한다. 클라이언트의 요청에 대한 응답을 반환한다. Service -> 비즈니스 로직을 추상화한 인터페이스. 인터페이스를 사용하면 구현 세부 정보를 숨기고 클라이언트 코드와 분리할 수 있어서 유지보수성과 확장성을 높인다. ServiceImpl -> Service 인터페이스를 구현하는 클래스. Service 인터페이스에서 선언된 모든 메서드를 구현하기 때문에 해당 인터페이스에서 정의된 모든 비즈니스 로직을 구현해야 한다. 따라서 SErvice 인터페이스를 구현하는 공간이 ServiceImpl이다. → Service(인터페이스)와 ServiceImpl(구현체)을 분리해야 하는 이유는 유연성과 확장성 때문이다. → 인터페이스를 사..