전체 글

·CS
@Component : 개발자가 직접 만든 Class를 spring Bean으로 등록하기 위한 Annotation이다. 스프링은 이거 보고 spring bean으로 등록한다. @ComponentScan : @Component, @Service, @Repository, @Controller, @Configuration 중 1개라도 붙어있는 클래스를 찾으면 context에 bean으로 등록한다.또한 @Component Annotation이 있는 클래스들은 bean인스턴스를 생성해준다. @Bean : @Bean Annotation은 개발자가 제어가 불가능한 외부 라이브러리 같은 것들을 Bean으로 만들 때 사용한다. @Controller : Spring에게 해당 Class가 Controller의 역할을 한다고..
·CS
HTTP method를 설명하기 위해서는 HTTP가 무엇인지 부터 알아야 한다. 간단하게 설명하면 인터넷에서 데이터를 주고받을 수 있는 프로토콜(규칙)이며 아래와 같은 순서로 동작한다. 클라이언트 측에서 브라우저를 통해 어떤 서비스를 url을 통해 또는 다른 것을 통해 ( 대부분 url ) 요청(request)을 하면 서버에서는 해당 요청에 맞는 결과값을 클라이언트에게 응답(response)의 형태로 돌려준다. HTTP 를 통해 HTML , JSON , XML 등과 같은 형태의 정보를 주고받을 수 있다. 보통 클라이언트가 어떤 형태의 정보를 받고싶다고 명시해주는 경우가 많다. 그럼 HTTP method란? 위에서 설명한 요청(request)과 응답(response)의 방식 , 쉽게는 서버에 요청보내는 방..
·CS
Controller 란? 사용자의 요청이 들어오면 응답을 해주기 위해 Service를 호출 , Service에서 실질적으로 처리한 내용,결과물을 다시 받아서 사용자에게 전달(보통 View에 전달해서 사용자가 눈으로 볼 수 있게 해준다.)해주는 역할을 하는 것 Service 란? Controller에서 사용자의 요청을 처리하기 위해 호출하는 것으로 , Service는 알맞은 정보를 가공,처리하여 Controller에게 데이터를 넘긴다.이 때 알맞은 정보를 가공,처리하기 위한 비즈니스 로직을 수행하며 , 가공,처리하는 과정에서 필요한 데이터는 Repository를 호출해 전달받는다. Repository란? Entity에 의해 생성된 DB에 접근하는 메서드 들을 사용하기 위한 인터페이스로 , 쉽게 말해 DB와..
·CS
흔히 service에서 비즈니스 로직을 수행한다고들 한다. 그럼 service에서 하는 일을 정리하면 그게 비즈니스 로직이지 않을까? 라는 생각으로 비즈니스 로직을 정의 하고 싶다. 일단 service는 controller에서 사용자의 요청을 받아서 실제 데이터를 가공해서 요청에 맞는 응답을 controller에게 다시 전해준다. 위 문장을 정리해서 비즈니스로직을 정의해 보면 ,비즈니스 로직은 사용자의 요청에 맞게 프로그램에서 데이터를 생성,처리,가공,저장하는 일 , 좀 더 쉽게는 사용자가 원하는 기능을 수행해주기 위해 구현하는 로직 이라고 할 수 있다.
·CS
Domain이란? 개념적으로는 '영역'을 말한며 , 소프트웨어로 구현하고자 하는 문제 영역이라고 할 수 있다. 맛집 공유 애플리케이션을 예를 들면 맛집 정보를 저장하는 회원 맛집으로 저장되는 음식점 자신의 맛집을 다른 회원과 공유하는 과정 이들을 가각의 도메인 이라고 부를 수 있다. DDD( Domain Driven Design ) 만들어진 계기는 일방향적인 소통과 개발에서 출발한다. 도메인 전문가들이 도메인을 추상화해서 모델을 추출,설계한다. 개발자들은 모델만을 보고 소프트웨어를 실체화한다. 위 과정에서의 문제점은 도메인 전문가들은 개발자들을 생각하지 않고 복잡하게 도메인을 짠다 -> 소프트웨어의 복잡성 높아진다. 개발자들은 모델을 만든 도메인 전문가들의 의도를 모른 상태로 소프트웨어를 만든다 -> 도..
·CS
시작은 Dependency( 의존관계 )로 출발한다. 대충 알고 있을 테니 간단히만 설명하면 ,B가 변했는데 그 변화가 A에게 영향을 줄 때 이를 Dependency가 있다고 하며, A가 B에 의존적이다 라고도 한다. 그럼 DI( Dependency Injection )는? 의존관계인 A,B간에 A에서 B를 직접 생성해서 사용하는게 아니라 , 외부에서 B를 생성해서 주입해준다는 것이다. 다음은 사용시 장점이다 의존성이 줄어든다. = 결합도가 낮아진다. 기존에는 직접 생성하는 부분 때문에 B를 수정할 때 A의 구현 자체를 수정해야 하지만 , 외부에서 주입하면 B를 수정해도 A의 구현 자체를 수정할 일이 없거나 줄어들게 된다. 의존성이 낮아지면 다른 데에다 사용해도 문제가 발생할 가능성이 낮아지니까 코드의 ..
·에러
깃헙 계정을 새로 파고 저장소를 만들었다. 소스코드 작성 후 터미널로 깃헙 온라인 저장소에 푸시할려고 하는데 에러(remote repository not found.)가 뜬다. 뜻은 입력한 온라인 저장소를 못 찾았다는 뜻인데 , 왜 못 찾나 했더니 pc에 등록된 일반 자격 증명 중 git:https://github.com 증명에 이전에 사용했던 아이디가 등록되어 있었다. 그래서 현재 계정이 아니라 예전 계정에서 저장소를 찾고 있었다. 해결방법 윈도우의 경우 여기서 git:https://github.com 부분을 편집해주면 된다. 아니면 제거하고 명령어 다시 실행하면 온라인으로 로그인해달라며 알아서 브라우저를 켜준다. 그럼 로그인 해주면 해결된다.
·CS
어노테이션 ( @ ) 이란 주석이란 뜻을 가진 단어지만 , 자바에서는 소스코드에 '@'예약어를 추가해서 사용할 수 있는 메타 데이터의 일종이다. 그럼 메타데이터란? 애플리케이션이 처리해야 할 데이터가 아니라 , 컴파일 과정과 실행 과정에서 코드를 어떻게 처리해야 하는지를 알려주기 위한 추가정보다. 쉽게 말하면 데이터로 된 사용설명서? 같은 거다 어노테이션의 기능 컴파일시 : 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공 빌드시 : 소프트웨어 개발 환경이 빌드나 배포시 코드를 자동으로 생성할 수 있도록 정보 제공 실행시 : 런타임시에 특정 기능을 실행하도록 정보 제공 자바에서는 미리 정해져 있는 여러 어노테이션( 예를 들어 @Override )들이 있지만 개발자가 커스텀,생성해서 사용할 수도 있다.
forrest13
forrest