개인 api 프로젝트를 통한 spring 공부 과정 아직 완성하진 못했지만 내 코드에 정말 정말 많은 일이 있었고.. 많은 것을 배웠다. 과정을 하나 하나 기록하지 못한 것이 아쉽지만 기억을 짜내서 최대한 제작 과정을 작성해보려한다. 다른 사람의 코드를 보고 늘 새로운 기술이 보이면 일단 도입해보려 시도중이다. 결과적으로 매일 하루에 한개 이상의 낯선 기술을 내 코드에 집어넣고있다. 시야가 넓어지니 프로그램의 흐름도 훨씬 잘 이해할 수 있다. 1. 무작정 db 생성 일단 '어떤 어노테이션이 있는가' 를 중점적으로 학습했다. 어노테이션은 선대 프로그래머들이 spring을 사용하며 불편했던 기능들을 한 단어로 압축시켜 놓은거라 많이 아는게 힘이라고 생각한다.@Entity //entity임을 spring container에 알림@AllArgsConstruc.. 2024. 11. 30. 리눅스로 개발환경 옮기기(Docker, Postgresql, Redis) -2 하.............됐다........ 네트워크나 도커에 대한 기본 지식이 없어서 연결만 하는데도 되게 힘들었다.근데 이 과정에서 정말 많은 걸 배울 수 있었다.redis, db, 메인 app 모두 실행됐다.계속 삽질 한 원인은 docker 컨테이너 내부에서 사용하는 port와 외부에서 매핑시켜주는 port 에 대한개념(포트포워딩)이 모자랐다. 그 때문에 DB쪽에서 계속 연결이 안 되어서 힘들었다.....그런데, db만 포트포워딩을 내부포트랑 다른 값으로 해줘야 에러가 안 나는 이유가 궁금해서 튜터님께 찾아가보니 redis도 지금 정상적으로 돌아가는게 아니라고 해주셨다. 아마 redis를 사용하려면 26379를 기본포트 6379로 포트포워딩 해줘야겠지? 그리고 docker는 일단 gradle boo.. 2024. 11. 29. 리눅스로 개발환경 옮기기(Docker, Postgresql, Redis) -1 service 계층에서 cache 기능을 사용해보고싶어서 redis를 설치하려니깐 윈도우에선 공식적으로 지원이 안 된다고 한다그래서 개발환경을 우분투로 옮겼다이래서 다들 맥이나 리눅스 쓰라고 하는건가,,, 싶었다음.. 근데 문제가 생겼다. 윈도우랑 리눅스랑 환경이 너무 달라서 스프링 실행 자체가 안된다.아 이럴 때 도커를 쓰는구나? 싶어서 도커를 설치했다. 노트북과 컴퓨터가 각각 다른 환경이라 벌써 협업을 경험할 수 있다.일단 도커파일이라는걸 만들어줬다. 고래가 상당히 귀엽다..어..이거 된 거 맞나? ㅋㅋ진지하게 뭐가 뭔지 하나도 모르겠지만 일단 뭔가가 되고는 있다.도커가 켜진건 맞나 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ알고보니 설치도 제대로 안 돼서 공홈에 들어갔다. 공홈에서 설치해야 되는 파일이 .. 2024. 11. 28. DB 구조 설계하기 패키지는 일단 이렇게 배치해봤다. github에서 다른 사람들 코드 배치 구조를 많이 참고한거라 왜 이렇게 나누는진 아직은 잘 모르겠다. 아마 가장 직관적이고 각 기능에 따라 잘 나누어져 있어서 그런 듯 하다. 그리고 Db 부분을 완성했다.@Entity@AllArgsConstructor@NoArgsConstructor@Getter@Builder@EntityListeners(AuditingEntityListener.class)public class BoardDb { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotBlank private String title; @NotBlank .. 2024. 11. 28. SpringBoot Swagger (API 명세서) + Spring security API 명세서에 포함되어야 하는 내용 1. API 이름과 설명 2. URL 및 HTTP 메서드 (GET /users, POST /users, DELETE /users, PUT /users) 3. 요청헤더: 요청에 필요한 인증 정보나 메타데이터파라미터: 쿼리 파라미터, 요청 Body에 들어갈 데이터 (JSON) 4. 응답 : HTTP 상태 코드 (성공 또는 실패) 5. 에러처리 : 실패시 반환되는 에러코드와 메세지 정의 (404) RESTFUL API 설계를 위해 정말 중요한 작업이지만, 일일이 작성하기 너무 귀찮다.Spring boot에서는 Swagger를 사용해 api명세서를 쉽게 작성할 수 있다. build.gradle에 의존성을 추가하면 된다.implementation 'org.springdoc.. 2024. 11. 27. postgresql+gradle+springboot 프로젝트 초기 설정 앞으로 두고두고 꺼내보려고 기록하는 초기 설정법 우선 spring initializr를 이용해서 gradle+spring 기본 파일을 만들고 압축을 해제한다.intellij같은 ide에서 열어준다. 개발 환경 세팅을 위해 application.properties 파일에 있는 내용을 다 지우고 개발용 세팅을 해준다. application-dev.properties 파일을 새로 만들고,# application-dev.propertiesspring.application.name=crudspring.main.web-application-type=servlet# ?? ?? ?? (???: 8080)server.port=8080# ?? ?? ?? ??logging.level.org.springframework=I.. 2024. 11. 27. 기존 코드에 Stream 반영하기 <5> ?????예?????? 아놔.. 까먹고 조회할 때 스트림 안썼다;;그래도 로직은 다 있으니까 바꾸는건 쉽... 쉬..public class OrderBuilder { private final List mainItem = new ArrayList(); private final List sideItem = new ArrayList(); private Coupon coupon; public boolean isEmpty() { return mainItem.isEmpty() && sideItem.isEmpty(); } public void addMain(MainMenuType type, int quantity, int taste){ for(MainMenuI.. 2024. 11. 25. Trouble shooting <4> 모든 state 빌드를 마치고, 테스트 구동을 하는 도중에 버그를 두개 발견했다. 1. 결제 완료 시 5초 뒤에 메인화면으로 돌아가게 하는 로직이 고장남.5초 뒤에 mainstate가 되긴 하는데, 화면이 안뜬다. 그리고 빈 화면에서 input이 받아진다. 원인은 두 가지로 볼 수 있을 것 같은데1. sleep의 특성을 제대로 이해하지 못한 채로 사용해서 오류가 발생함2. Main.js의 로직을 무시함 CompletedState.java로 state를 따로 관리하고 있었는데 그냥 Payment에 통합시키는 것이 깔끔하기도 하고 main과 충돌(handleInput으로 인해 생기는 오류)도 없을 듯 해서 병합시켰다.병합시켜주니 정상적으로 작동한다. ㅎㅎ과도한 class 분리 때문에 main.js에서 sta.. 2024. 11. 25. Builder pattern<3> 키오스크에 빌더 패턴을 쓰게 된 계기는 예전에 디자인패턴에 관해 훑어볼 때 누군가가 빌더를 서브웨이에 비유한 것을 보고 영감을 얻었다.https://refactoring.guru/ko/design-patterns/builder 빌더 패턴/ 디자인 패턴들 / 생성 패턴 빌더 패턴 다음 이름으로도 불립니다: Builder 의도 빌더는 복잡한 객체들을 단계별로 생성할 수 있도록 하는 생성 디자인 패턴입니다. 이 패턴을 사용하면 같은 제작refactoring.guru이 글을 많이 참고했다. 빌더는 인터페이스와도 잘 쓰인다고 한다. 나는 한 명의 사용자에게 일관된 로직으로 주문을 받으니 인터페이스를 구현하지는 않고, 빌더클래스를 만들어서 주문정보를 합해서 완성된 Order 객체로 반환하도록 했다.나는 지금 팩토리.. 2024. 11. 24. State pattern <2> https://inpa.tistory.com/entry/GOF-%F0%9F%92%A0-%EC%83%81%ED%83%9CState-%ED%8C%A8%ED%84%B4-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EB%B0%B0%EC%9B%8C%EB%B3%B4%EC%9E%90 💠 상태(State) 패턴 - 완벽 마스터하기State Pattern 상태 패턴(State Pattern)은 객체가 특정 상태에 따라 행위를 달리하는 상황에서, 상태를 조건문으로 검사해서 행위를 달리하는 것이 아닌, 상태를 객체화 하여 상태가 행동을 할 수 있도inpa.tistory.comhttps://velog.io/@rudnf003/Java-%EC%83%81%ED%83%9C-%ED%8C%A8%ED%84%B4State-Patt.. 2024. 11. 24. 이전 1 2 3 4 5 6 다음