분류 전체보기 97

회원 웹 기능 - 등록, 출력

1) Index 페이지 구성 기본 url 페이지로 접근 시 Index페이지로 접근 가능하게 화면 구성 resource > templates > home.html Hello Spring 회원 기능 회원 가입 회원 목록 2) 회원 등록 폼 신규 회원을 등록할 수 있는 폼을 만들고, 레파지토리에 연결하자. resource > templates > members > createMemberForm.html 이름 등록 3) 회원 출력 페이지 구성 thymeleaf를 통해서 each Loop를 통해서 리스트 페이지를 구현할 수 있다. # 이름 3) HomeController 작성 인덱스 페이지와, 회원등록 페이지로 이동할 수 있게 @GetMapping 작성 Post 방식으로 넘어오는 값을 받기위해 @PostMappi..

자바 코드로 직접 스프링 빈 등록하기

자바 코드로 직접 스프링 빈 등록하기 상황 발생 : 정해지지 않은 DB 해결 방법 : SpringConfig로 빈을 직접 등록, DB가 선택됬을때 SpringConfig의 MemoryMemberRepository만 수정하면된다. SpringConfig 생성 main > java > hello.hellospring > SpringConfig.java 생성 package hello.hellospring; import hello.hellospring.repository.MemoryMemberRepository; import hello.hellospring.service.MemberService; import org.springframework.context.annotation.Bean; import org.s..

컴포넌트 스캔과 자동 의존관계 설정

스프링 빈을 등록하고, 의존관계 설정하기 회원 컨트롤러가 회원서비스와 레포지토리를 사용할 수 있게 의존관계를 설정하자 컴포넌트 스캔 스프링이 시작되면 스프링 컨테이너가 생성이 된다. 이후 스프링이 @Componet을 사용하는 클래스들을 스캔한 후 빈형식으로 스프링 컨테이너에 올려놓다. 이를 스프링 빈을 등록한다고 한다. 빈을 등록하게 되면 싱글톤 형식으로 사용자가 원하는 곳에 스프링이 DI를 통해서 직접 넣어준다. 위 그림은 스프링 컨테이네어 빈(완두콩) 형식으로 Cotroller가 올라가져 있는 것을 볼 수 있는데, 이는 @Service, @Controller, @Repository의 내부에 @Componet가 있기 때문에 등록될 수 있는 것이다. 내부에 @Componet를 통해서 스캔해 등록하는 것이..

회원 관리 예제 - 백엔드 개발 (2)

1. Service 구현 service를 구현하다 보면 비즈니스 네임이랑 비슷하다는 것을 알 수 있다. 그래야지 기획자가 말하는 부분의 로직을 찾기가 쉽다. model 같은 경우 단순히 기계적으로 개발스럽게 만든다. package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import java.util.List; import java.util.Optional; public class MemberService { MemberRep..

회원 관리 예제 - 백엔드 개발 (1)

비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 일반적인 웹 애플리케이션 계층 구조 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비지니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비지니스 도메인 객체, 예) 회원, 주문 , 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 1. Repository interface 구현 현재 비지니스 로직에서 데이터 저장소가 선정되지 않았다고 가정하기 때문에, 인터페이스로 구현 차후에 선정될 시 변경함. package hello.hellospring.repository; import hello.hellospring.domain.M..

스플링 웹 개발 기초 - 정적 컨텐츠, MVC와 템플릿 엔진

정적 콘텐츠 - 웹브라우저에 파일을 그대로 전송해주는 방식 MVC와 템플릿 엔진 - 서버에서 데이터를 변형해서 HTML형식으로 바꿔서 전송해주 방식 API - json 데이터 포맷으로 데이터를 클라이언트에 전송해주는 방식 - 서버에서 통신할 때 사용 1. 정적 콘텐츠 스프링 부트에서는 기본적으로 정적 콘텐츠를 제공해준다. main > resource > static 디렉터리를 생성 static 디렉터리 밑에 hello-static.html 파일을 생성 url: http://localhost:8080/hello-static.html 바로 접근 가능하다. 접근 순서는 내장 톰캣 서버에서 요청을 받는다. 스프링 컨테이너에서 관련 컨트롤러를 찾는다. 없을 시 resources:static/hello-static..

[리뷰]클린코드 clean code 11장 까지의 리뷰 그리고 진행

현재 클린코드 11장까지 정리 완료하였습니다. 하지만 최근까지 Flutter 위주의 공부와 실무 적용으로 Spring의 언노테이선의 기능들을 확실히 알지 못한 상태에서 단편적으로 이해하고 넘어가는 느낌을 강하게 받았습니다. 12장 그 이후부터는 Spring의 언노테이션과 각각의 기능들이 자바 기반으로 나와있는데, 이를 좀 더 정확히 알고 전달해 드리고자 Spring 언어를 공부한 후 12장 부터 다시 진행하려고 합니다. 현재 인프런을 통해 인강을 듣고 직접 코딩을 작성하고 있으며, 이것 또한 블로그에 올리고 완료되는 즉시 12장 부터 다시 진행하도록 하겠습니다. 감사합니다.

개발서적 2022.03.05

[리뷰]클린코드 clean code 11장 - 시스템 - (2)

*확장 '처음부터 올바르게' 시스템을 만들 수 있다는 믿음은 미신이다. 깨끗한 코드는 코드 수준에서 시스템을 조정하고 확장하기 쉽게 만든다. 소프트웨어 시스템은 물리적인 시스템과 다르다. 관심사를 적절히 분리해 관리한다면 소프트웨어 아키텍처는 점진적으로 발전할 수 있다. *횡단의 관심사 원론적으로 모듈화 되고 캡슐화된 방식으로 영속성 방식을 구상할 수 있다. 하지만 현실적으로는 영속성 방식을 구현한 코드가 온갖 객체로 흩어진다. 여기서 횡단의 관심사라는 용어가 나온다. 사실 EJB 아키텍처가 영속성, 보안, 트랜잭션을 처리하는 방식은 관점 지향 프로그래밍 AOP(Aspect-Oriented Programming)을 예견했다고 보인다. AOP에서 관점(Aspect)이라는 모듈 구성 개념은 "특정 관심사를 ..

개발서적 2022.03.02

[리뷰]클린코드 clean code 11장 - 시스템 - (1)

*도시가 잘 돌아가는 이유 수도권 관리팀, 전력 관리팀, 교통 관리 팀, 치안 관리 팀, 건축물 관리 팀 등 각 분야를 관리하는 팀이 있다. 적절한 추상화와 모듈 때문이다. 그래서 큰 그림을 이해하지 못할지라도 개인과 개인이 관리하는 '구성요소'는 효율적으로 돌아간다. 흔히 소프트웨어 팀도 도시처럼 구성한다. 깨끗한 코드를 구현하면 낮은 추상화 수준에서 관심사를 분리하기 쉬워진다. 높은 추상화 수준, 즉 시스템 수준에서도 깨끗함을 유지하는 방법을 살펴본다. *시스템 제작과 시스템 사용을 분리하라 제작은 사용과 아주 다르다 소프트웨어 시스템은 (애플리케이션 객체를 제작하고 의존성을 서로 '연결' 하는) 준비 과정과 (준비 과정 이후에 이어지는) 런타임 로직을 불리해야 한다. 대다수의 애플리케이션은 시작 단..

개발서적 2022.02.26

[리뷰]클린코드 clean code 10장 - 클래스

책 내용 - 클래스 *클래스 체계 클래스를 정의하는 표준 자바의 관례 변수 목록이 나온다. 정적 static, 공개 public 상수가 있다면 맨 처음 나온다. 정적 static, 비공개 private 변수가 나온다. 비공개 인스턴스 변수가 나온다. 공개 함수가 나온다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다. 즉, 추상화 단계가 순차적으로 내려간다. 그래서 프로그램은 신문 기사처럼 읽힌다. 여기서 정적 변수와 인스턴스 변수라는 말에서 어떤 부분을 말하는지 잘 와닿지 않았다. 정적 변수 static 클래스 내에 satitc 키워드로 선언된 변수 static영역에 생성되면서, 모든 객체의 공유가 가능해진다. 처음 JVM이 실행되어 클래스가 메모리에 할당될 때부터 프로그램이 종료될 때까지 메..

개발서적 2022.02.24