전체글 224

[SPRING] 의존성 주입 DI , IoC 컨테이너

강한 결합의 문제점 Controller 5 개가 각각 Service1 을 생성하여 사용 중 (각각 객체를 생성하여 사용중) Repository1 생성자 변경에 의해.. ⇒ 모든 Contoller 와 모든 Service 의 코드 변경이 필요 강한 결합 해결방법 = 느슨한 결합으로 만들어주기 각 객체에 대한 객체 생성은 딱 1번만!! 생성된 객체를 모든 곳에서 재사용!!! => 제어의 역전 (IoC : Inversion of Control) : 프로그램의 제어 흐름이 바뀜 일반적: 사용자가 자신이 필요한 객체를 생성해서 사용 IoC (제어의 역전) 용도에 맞게 필요한 객체를 그냥 가져다 사용 "DI (Dependency Injection)" 혹은 한국말로 "의존성 주입"이라고 부릅니다. 사용할 객체가 어떻게..

[CS] 절차적 프로그래밍 vs 객체지향 프로그래밍

: 초기 프로그래밍방식 / 순차적으로 나열 / 올인원컨트롤러 : 소프트웨어의 규모가 커지면서 필요가 부각 ->하나의 사물(객체)에 하나의 의미를 부여하는 것처럼 프로그래밍하게 됨. 하나의 역할에 하나의 객체를 맵핑 ex) 퀵메모 : 절차적 프로그래밍 주제별로 메모 : 객체지향 프로그래밍 => 추천 프로그래밍 : 처음엔 절차적 -> 객체지향 프로그래밍으로 리팩토링(기능상의 변경 없이 구조를 개선) ->하나의 파일에 너무 많은 코드가 들어가지 않게/ 역할별로 코드 분리, 코드를 좀 더 읽기 편하게!

🌏CS 2022.08.22

[SPRING] Controller, Service, Repository

어떤 것이든 개념을 알기 전에 왜? 부터 생각하는 것이 나중에 더 좋다는 걸 알았다. ❓Survlet 으로도 구현이 가능한데 왜 Controller를 쓸까? => 컨트롤러의 장점 : API 마다 파일을 만들 필요가 없음. => 보통 하나의 controller 안에 모든 api를 넣지는 않고 유사한 성격의 api를 하나의 controller로 관리. (함수 명도 마음대로 설정 가능 (클래스내 중복함수명은 불가)) ❓All in one Controller의 문제점? => 한 개의 클래스에 너무 많은 양의 코드가 존재 => 이해하기 어려움 - 현업에서는 코드 추가 또는 변경 요청이 계속 생김. 1. Controller의 역할 클라이언트의 요청을 받음 요청에 대한 처리는 서비스에게 전담 클라이언트에게 응답 2...

[SPRING] 입문주차 과제 - 출력 값 + 에러코드 만들어주기

=> "success" : true "data":[{ 조회 값 }] "error" : null =>"success" : true "data":[{ 작성한 것들 }] "error" : null 에러메세지 ^^,,,,, 여기까지 해놓고 다한 줄 알았음^^!!! 생각지도 못함 ㄴㅇㄱ 그러면 뭐다? 수정해줘야지 ^^ 야호!! - 출력 값을 모두 data로 감싸서 그안에 입력되어있음 + success :boolean + error : code/msg 가 따로 뜸! - success가 true일때 : 정상 출력, error : null false 일때 : 에러메세지만 출력 data : null 1차로 든 생각은 [Controller]에서 리턴 값들을 모두 바꿔주면 되겠다! 뭘로? =>Response Dto 를 따로..

22.08.18 (목) 18일 차

오늘 한 것 개인과제 제출하기 알고리즘 1문제 JAVA 개념 정리 (조금) SPRING 개념 정리 => JPA/MVC [개인과제] 또또 수정 .. -> 출력값 데이터로 감싸기 + success, error 값 뜨게하기 인텔리제이에서 커밋하지말고 되도록 소스트리에서 커밋&푸시하기.. 오늘 배운 것 멘붕 개인과제 제출 깃허브 2022.08.18 - [JAVA] - [JAVA] 기초 - 다시 정리하는 기본 개념 2022.08.18 - [SPRING] - [SPRING] JPA / ORM 2022.08.18 - [SPRING] - [SPRING] MVC 패턴 2022.08.18 - [알고리즘/JAVA] - [프로그래머스] 최소직사각형 DTO수정해서 data로 출력 값 감싸기 try, catch 사용해서 에러값 ..

[SPRING] MVC 패턴

Model - View - Controller 3가지 역할로 프로젝트 구성요소를 구분한 패턴 Model 어플리케이션이 무엇을 할 것인지 정의하는 부분즉 DB와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다룸 View 사용자에게 시각적으로 보여주는 부분 (UI) Controller Model이 데이터를 어떻게 처리할지 알려주는 역할. 사용자에 의해 클라이언트가 보낸 데이터가 있으면 모델을 호출하기전에 적절히 가공을 하고 모델을 호출. 그런다음 모델이 업무 수행을 완료하면 그 결과를 가지고 View에게 전달하는 역할. => 사용자가 URL을 호출하면 Controller에서 요청들을 받고 그 안에서 로직이나 데이터가 필요하면 Model에서 호출해서 모델에 구성된 로직이나 DB에 접근해서 데이..

[SPRING] JPA / ORM

JPA JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준 JPA가 제공하는 API를 사용하면 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하지 않아도 된다. JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달하고, 객체를 자동으로 Mapping 해준다. JPA는 내부적으로 JDBC API를 활용하는데, 개발자가 직접 JDBC API를 활용하면 패러다임 불일치, SQL 의존성 등으로 인해 효율성이 떨어진다. 이 때, JPA를 활용한다면 모든 SQL에 대해 개발자 대신 JPA가 자동으로 해결해 준다는 점에서 생산성을 크게 높인다. ORM ORM(Object-Relational Mapping)은 객체와 관계형 DB를 매핑한다는 뜻 ORM 프레임워크를 사용하..

[JAVA] 기초 - 다시 정리하는 기본 개념

분명히 공부도 하고 정리도 했는데 남는 게 없다.. 원래 이런가? 정의를 정확하게 외우는 것은 기술면접 전에 해야할 일이고 어떤때에 어떤 걸 써야 한다 정도로 알아두기!! 객체지향 프로그래밍 OOP 프로그래밍에 사용 될 데이터의 상태와 행위를 객체로 만들어, 객체 간의 상호작용을 통해 비지니스 로직을 구성하는 프로그래밍 기법 - 특징 상속 : 자식클래스가 부모클래스의 기능과 상태를 물려받아, 그대로 사용하거나 필요한 부분만 수정할 수 있도록 하는 것 추상화 : 불필요한 부분을 지우고 필요한 핵심만을 정의해 두는 것. 사물을 추상화 한 후 필요한 객체에서 상속 받아 필요에 맞게 기능을 재정의해 사용할 수 있도록 함 캡슐화 : 비슷한 속성과 메소드들을 하나의 클래스로 모은 것. 외부 접근으로부터 데이터를 지..

22.08.17 (수) 17일 차

오늘 한 것 [개인과제] usecase 그리기 [개인과제] 질문 답변 적기 알고리즘 1문제 비밀번호 확인 구현 부분 블로그 정리 [개인과제] 조회기능 수정 git readme 작성 팀 블로그 정리 오늘 배운 것 2022.08.17 - [알고리즘/JAVA] - [프로그래머스] 같은 숫자는 싫어 2022.08.17 - [SPRING] - [SPRING]입문주차 과제 비밀번호 확인 API 만들기 2022.08.17 - [SPRING] - [SPRING] 입문주차 과제 - 전체 게시글 목록 조회 / 게시글 조회 2022.08.17 - [JAVA] - [JAVA] objects.equals() 정리 [개인과제] 질문답변은 깃에 올렸다. InteliJ로 바로 comit & push 하기 (알아서 merge해줌..)..

[SPRING] 입문주차 과제 - 전체 게시글 목록 조회 / 게시글 조회

03 주차 과제를 잘해낸 줄 알았더니 아니었다 ... 전체 게시글 조회 시 : 제목/ 작성자명/ 작성 날짜 가 떠야하고 게시글 조회 시 : 제목/ 작성자명/ 작성날짜 / 작성내용 이 떠야했다.. 어제까지 만든건 모두 다 떴다 ...^^ 작성날짜/수정날짜/id/제목/내용/작성자/내용/비밀번호 모두 .. 배포까지 다하고나서야 알게되어서 ... ㅎㅎ 그치만 제출 전까지 시간이 남은 상태에서라도 알게되었으니까 수정해야지..ㅎ [Controller] @GetMapping("/api/post") public List getPosting() { return postingRepository.findAllByOrderByModifiedAtDesc(); } Entity가 리스트 형태로 나온다 그렇다면 일단 Entity로 ..

[JAVA] objects.equals() 정리

Objects.equals() : 객체의 주소를 비교 즉, 같은 값을 가진 객체라고 하더라도 따로 생성되었다면 False. //객체 비교시 !! public class Main{ public static void main(String args[]){ Name name1 = new Name("Ellen"); Name name2 = new Name("Ellen"); Name name3 = name1; System.out.println(name1.equals(name2)); // False System.out.println(name1.equals(name1)); // True } 다같은 이름으로 보이는데 False가 나옴 => 따로 생성되어 주소값이 다르기 때문! String aa = "cc"; String ..

[SPRING]입문주차 과제 비밀번호 확인 API 만들기

03주차 과제를 하면서 다른 부분은 강의부분을 보면서 그대로 작성하면서 이해했는데 새로운 기능이 더 있었다. 이론은 알아도.. 처음부터 해보려니 안되는 것,,, ^^ 고생하면서 했었어서 정리해두려고 한다. API 명세서중 비밀번호 확인 부분이다. 비밀번호를 보내면 db에 저장된 값과 비교해보고 true / false로 응답이 오면 된다. Controller에 api를 적어주려면 일단 비밀번호확인에대한 서비스 부분을 먼저 구현해야 한다. 서비스 부분에 만들려하니 매개변수로 비밀번호만 따로 dto를 따와서 입력받은 비밀번호와 비교해야 한다!! 그렇다면 비밀번호 DTO를 먼저 따줘야 한다! (순서는 솔직히 상관 없을 듯) 1. requestDto =>PostingPasswordDto먼저 만들어줌 @Getter..

[GIT] 마크다운 작성 팁 (Readme.md) / 이미지 올리기, 이모지 올리기, 링크연결 방법, 체크박스 만들기,테이블 작성 꿀팁 사이트

이제 본격적으로 깃허브를 활용하려고 하다보니 readme의 중요성에 대해서도 알게되었다. 일단 한 눈에 보기도 좋은게 집중도 잘되고 편-안하니까 Github 프로젝트의 Issue 탭->new Issue 업로드하고 싶은 이미지를 내용칸으로 드래그한다 ![Uploading {image file name}]() => html 태그로 바뀐다 4. 복사해서 readme에 붙여넣기 하면된다! 요새 힙한 포트폴리오는 이모지를 잘 활용한 것이라고 생각한다. (그러기엔 황량한 내 블로그) [이모지] : https://gist.github.com/rxaviers/7360908 Complete list of github markdown emoji markup Complete list of github markdown emo..

GIT HUB 2022.08.17

22.08.16 (화) 16일 차

오늘 한 것 개인과제 - 기능구현 postman 사용방법 배우기 개인과제 - 배포 개인과제 - github연동 aws 계정 해킹당한거 알아내고 support에 문의하기 ..ㅎㅎ 오늘 배운 것 rds - mysql 연결하고 서버연동 ec2서버 구매해서 nohup으로 서버배포하기 spring api 짤때는 url을 잘 확인하자.. 내일 할 것 개인과제 - usecase 그리기(오전) 개인과제 - 질문 답변 적기(오후) 입문학습자료03 ->가능하면 블로그에 정리(오후) 알고리즘 1문제 - >블로그에 정리 (오전) 비밀번호 확인 구현 부분 블로그 정리(오전) JAVA 개념 다시 잡기 SPRING 개념 블로그 정리 (팀과제 질문 부분 모두 정리해두면 좋을듯)(오후) 오늘 그래도 개인과제를 배포까지 (원하던데 까지..