본문 바로가기
  • 시 쓰는 개발자

Spring13

스프링 느낀점 - 2023.03.07. 작성 옛날에 메모했던 걸 보며 내용을 바로잡기 위해 블로그에 기록해둡니다. (23년 3월 메모)날짜표시가 따로 없는 건 과거의 메모니까, 틀린 내용이 다수 포함될 수 있음. 성공/실패 메세지>> 성공, 실패 여부에 대한 메세지를 항상 같이 넘겨주는 것이 무조건 좋다고 생각이 된다. 그래야 postman으로 검사할 때도 편하고 어디서 뭐때문에 실패했는지 내가 직접 넘겨줄 수 있기 때문에 훨씬 편하다.→ print로 찍을 수도 있는데, log.info로 로그를 남겨주는 것이 더 좋은듯하다.  API 명세서>> api 명세서는 거의 무조건 postman으로 관리하는 게 맞다. notion에 관리를 같이 해도 되는데, 노션은 사용해도 되고 안해도 된다면 postman은 무조건 해야하는 것 같다 그래야 기능확인하기도 .. 2024. 5. 9.
annotation 정리 생성자 관련 annotation - OOOArgsConstructor @RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어줌. @AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자를 만들어줌. 파라미터를 다 받아야함. 근데 이렇게 하면 필요한 걸 빠뜨리지 않고 객체를 만들 수는 있겠지만 다 넣어야 해서 오히려 객체 만들기 자체가 어려울 수 있음. @NoArgsConstructor 파라미터 아무것도 없는 기본 생성자. 이게 있어야 jpa가 테이블을 만들어줌. 객체화 하려면 생성자가 있어야하는데, 파라미터를 넘겨줘야만 객체를 만들 수 있는 상황이라면 객체를 쉽게 만들 수가 없고 그렇게 되면 테이블에 넣을 수 없기 때문에,.. 2024. 3. 11.
Bean에 대하여 IoC 글에서 이미 썼던 내용이지만, Bean에 대한 내용만 따로 쓰고싶었고, 그중에서도 자주 들여다볼 내용만 따로 추려냈다. Bean에 대한 내용들을 더 추가해보려 한다. Bean 빈 : 스프링 컨테이너(IoC컨테이너)가 관리하는 객체 빈 팩토리 : 빈들을 관리하는 컨테이너 컨테이너 : 객체들이 담긴 공간을 의미한다. 객체의 생명주기를 관리하여 개발자는 로직에만 집중할 수 있게 도와준다. 왜 Bean으로 등록할까? Bean은 IoC컨테이너가 관리하는 객체이다. 객체별로 빈인 객체도 있고, 빈이 아닌 객체도 있을 것이다. 단순히 객체를 만들었다고 해서 다 빈은 아니라는 것이다. 스프링이 말하는 Bean이란, ApplicationContext가 "알고있는" 객체이다. 그리고 위에서 언급했듯이 그러한 빈끼리.. 2024. 3. 8.
Portable Service Abstraction 백기선님의 스프링 강의를 듣고 작성하였습니다. 내용이 어려워서 종종 내용 확인해보고 틀린 부분은 보완하겠습니다. 스프링 핵심 3요소(Spring Triangle) 中 "서비스 추상화", PSA(Portable Service Abstraction)에 대해서 알아보자. PSA : 내부 동작을 추상화 PSA는 한마디로 "잘 만든 인터페이스"이다. 단어에서도 알 수 있듯이, 서비스를 추상화하는 작업이다. 잘 추상화 해놓았기 때문에 우리는 Low Level을 직접 다룰 일이 적다. 예를 들어 우리는 서블릿을 기반으로 두고 있음에도 불구하고 코딩할 때 Servlet이나 HttpServlet을 쓰지 않는다. 이것을 모두 Spring 웹 MVC에서는 @GetMapping, @PostMapping 등이 대체하고 있기 때.. 2024. 3. 4.
Aspect Oriented Programming 백기선님의 스프링 강의를 듣고 작성하였습니다. 내용이 어려워서 종종 내용 확인해보고 틀린 부분은 보완하겠습니다. 스프링 핵심 3요소(Spring Triangle) 中 "관점 지향 프로그래밍", AOP(Aspect Oriented Programming)에 대해서 알아보자. AOP : 공통적인 일을 분리한다. AOP에서 말하는 Aspect는 측면, 관점이라기 보다는 "여러 객체에 공통으로 적용되는 공통 관심사항"이다. 따라서 이런 공통 관심사항을 고려하며 프로그래밍하는 것이 바로 AOP이며, 더 정확히는 이런 공통되는 일을 분리하여 효율성을 높이는 방식을 의미한다. 만약 A작업 → 메세지 출력 → B작업 이런 flow가 있다고 하자. 이 구조가 여러 곳에서 쓰인다면 메세지 출력 부분만 다르고 A, B는 반복.. 2024. 3. 4.
Inversion of Control (Bean내용 포함) 백기선님의 스프링 강의를 듣고 작성하였습니다. 내용이 어려워서 종종 내용 확인해보고 틀린 부분은 보완하겠습니다. 스프링 핵심 3요소(Spring Triangle) 中 "제어의 역전", IoC(Inversion of Control)에 대해서 알아보자. IoC : 의존성 관리를 외부에서 해준다. 한마디로 메소드나 객체의 호출을 개발자가 결정하는 것이 아니라 외부에서 결정하는 것이다. 예를 들어 다음과 같은 코드를 보자. class Owner{ private OwnerRepository repo; public Owner(OwnerRepository repo) { this.repo = repo; } } Owner 클래스에서는 분명히 OwnerRepository를 사용하는데, 객체를 직접 생성하고 있진 않다. 생.. 2024. 3. 3.
프로젝트 회고 - 나만의 위키 만들기 공부 기간 : 2024.01.22. ~ 2024.02.23. (조금씩 기능 추가하고 UI 바꿔가며 진행중) Tool : spring , spring boot , mysql , mobaxterm , AWS lightsail , filezilla , Linux ubuntu ... 등 동기 : 내가 속한 동아리에 동아리 부원들이 노는 사이트가 있는데, 동아리 전용 나무위키 같은 개념이었다. 그 범위를 더 축소시켜서 나와 내 친구들만 쓰는 나무위키가 있으면 좋겠다는 생각을 했다. 그래서 처음에는 나무위키 클론 코딩을 해보고 싶었는데, 생각보다 정보가 잘 나오지 않아서 1달 안에(개강 전에) 프론트엔드도 없이 혼자서 시도하기는 무리였다. 백엔드 기능만 하는 거라면 어찌저찌 해보겠지만 프론트에 대해 무지했기에..... 2024. 2. 23.
JPA repository 쿼리문 코드 참고 (+jpa가 만드는 쿼리문 확인하기) jump to spring boot 교재를 참고하였습니다. jpa repository 메소드가 만드는 쿼리문 확인하기 → application.properties 혹은 yml에 아래 문구 추가하기 !! spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.show_sql=true Question findBySubjectAndContent(String subject, String content); 이런 코드를 쿼리로 바꾼다면 아래 사진에서 where절같이 바뀌게 된다. JPA repository 메소드 이름 짓기 그렇다면 repsository의 메소드 명을 잘 지어야한다는 감이 올것이다. 엔티티에 subject, co.. 2024. 1. 24.
spring 개발시 RestApi 방식과 뷰템플릿방식의 차이 스프링 공부를 하다보면 restapi, model, json, 뷰템플릿... 등의 이야기를 자주 듣게 되는데 이것들이 어떤 때에 사용되는 단어들인지 모르는 경우가 많다. 각각의 방식에 따라 데이터를 주고받는 형식이 다르고, 이것을 모른다면 Postman으로 기능 테스트를 진행할 때에도 올바른 기능일지라도 데이터 형식 설정을 잘못해서 오류가 나는 경우가 많아서, 이번 기회에 이것들을 간단하게 정리해보려고 한다. RestApi와 JSON https://100won-developer.tistory.com/21 API란 무엇인가 (+REST API) API란? sw가 다른 sw로부터 지정된 형식으로 요청하거나, 명령을 받을 수 있는 수단. ▶ 어떤 기술이나 제품이 아니라 “형식”이기 때문에 어떤 언어나 어떤 프.. 2023. 3. 8.