함수형 프로그래밍(Functional Programming)이란? 자료를 찾아보면서 이해하기 가장 좋았던 예시는 파이프라인이었다. 아래는 설명 전 이해를 돕기 위해한 자료로 , 내가 생각하는 함수형 프로그래밍의 기본 틀을 그림으로 표현한 것과 이미지이다. 개념 설명 파이프라인( 코딩에서는 함수 )은 input을 넣으면 input에 고정된 output을 내보낸다. 그림에서 보이다시피 외부에서는 파이프라인 안에 접근할 수도 볼 수도 없다. 마찬가지로 파이프라인 안에서도 외부에 접근하거나 볼 수 없다. 함수형 프로그래밍은 이런 파이프라인들( 함수들 )을 묶고 연결해서 프로그램을 만들어가는 프로그래밍 패러다임을 말한다. 함수형 프로그래밍의 특징 순수함수 = 함수에서 외부의 상태값을 참조하거나 외부의 상태를 변경..
데스크 탑에서 작업한 spring boot 프로젝트를 github에 올린뒤 노트북에서 pull해서 실행했는데 에러가 발생했다. 구글링을 해보니 chrome에서 보안상 https를 자동으로 붙여서 그런거다 , 서버 ip설정 문제다 .. 등등 많은 해결책이 있었지만 좀 생각해 보니 간단한 문제였다. 나는 mariadb에서 데스크탑과 노트북에서 사용하는 DB를 구분하려고 서로 사용하는 DB명을 다르게 했다. 근데 github올린 건 application.properties파일의 데이터베이스 설정에 데스트 탑 DB명으로 올려져 있기 때문에 생긴 문제였다. // application.properties 파일 ..... spring.datasource.url=jdbc:mariadb://localhost:3306/사..
DI 방법들을 알아보기에 앞서 먼저 @Autowired 어노테이션이 무엇인지 알아볼 필요가 있다. @Autowired는 사용된 위치의 변수 및 메서드에 필요한(의존하는) bean(스프링 빈)의 인스턴스를 IoC container에서 찾아 주입하는 역할을 한다. 쉽게 말해 스프링에서 의존관계 주입(DI)을 할 때 사용되는 어노테이션(Annotation)이다. 주의사항 : @Autowired는 의존 객체의 타입에 해당하는 bean을 찾아 주입한다. 그렇기 때문에 해당 타입의 bean이 없는 경우 작동하지 않는다. 또한 같은 이름의 bean이 여러 개일 경우도 있다.그럴 때는 @Primary 나 @ Qualifier(bean id) 등을 이용해서 해결할 수 있다. @Autowired 어노테이션은 기본적으로 생..
비교에 앞서 간단한 개념 설명 DTO : 순수하게 데이터 전달만을 위한 개체 getter/setter 메소드 말고 다른 로직은 없다. 가변성이 있지만 setter 메소드를 제거하고 대신 생성자로 필드에 데이터를 넣으면 불변성을 갖는다. ( 개인적으로 setter 메소드를 제거한 DTO는 반쪽짜리 VO라고 해도 무방한 것 같다. 딱 VO에서 euals(),hashCode() 만 오버라이드만 안한 상태? ) 보통 변화에 민감하지 않는 , 값을 비교할 필요 없는 데이터를 이동시킬 때 사용한다. VO : 값 그 자체를 나타내는 객체 데이터의 변화가 없는 불변성을 갖는다.( setter 메소드 사용하지 않는다. ) 서로 다른 VO여도 갖고 있는 데이터가 같으면 같은 객체라고 정의한다.(그림2 참고) , 이를 위해..
@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의 역할을 한다고..
HTTP method를 설명하기 위해서는 HTTP가 무엇인지 부터 알아야 한다. 간단하게 설명하면 인터넷에서 데이터를 주고받을 수 있는 프로토콜(규칙)이며 아래와 같은 순서로 동작한다. 클라이언트 측에서 브라우저를 통해 어떤 서비스를 url을 통해 또는 다른 것을 통해 ( 대부분 url ) 요청(request)을 하면 서버에서는 해당 요청에 맞는 결과값을 클라이언트에게 응답(response)의 형태로 돌려준다. HTTP 를 통해 HTML , JSON , XML 등과 같은 형태의 정보를 주고받을 수 있다. 보통 클라이언트가 어떤 형태의 정보를 받고싶다고 명시해주는 경우가 많다. 그럼 HTTP method란? 위에서 설명한 요청(request)과 응답(response)의 방식 , 쉽게는 서버에 요청보내는 방..
Controller 란? 사용자의 요청이 들어오면 응답을 해주기 위해 Service를 호출 , Service에서 실질적으로 처리한 내용,결과물을 다시 받아서 사용자에게 전달(보통 View에 전달해서 사용자가 눈으로 볼 수 있게 해준다.)해주는 역할을 하는 것 Service 란? Controller에서 사용자의 요청을 처리하기 위해 호출하는 것으로 , Service는 알맞은 정보를 가공,처리하여 Controller에게 데이터를 넘긴다.이 때 알맞은 정보를 가공,처리하기 위한 비즈니스 로직을 수행하며 , 가공,처리하는 과정에서 필요한 데이터는 Repository를 호출해 전달받는다. Repository란? Entity에 의해 생성된 DB에 접근하는 메서드 들을 사용하기 위한 인터페이스로 , 쉽게 말해 DB와..
흔히 service에서 비즈니스 로직을 수행한다고들 한다. 그럼 service에서 하는 일을 정리하면 그게 비즈니스 로직이지 않을까? 라는 생각으로 비즈니스 로직을 정의 하고 싶다. 일단 service는 controller에서 사용자의 요청을 받아서 실제 데이터를 가공해서 요청에 맞는 응답을 controller에게 다시 전해준다. 위 문장을 정리해서 비즈니스로직을 정의해 보면 ,비즈니스 로직은 사용자의 요청에 맞게 프로그램에서 데이터를 생성,처리,가공,저장하는 일 , 좀 더 쉽게는 사용자가 원하는 기능을 수행해주기 위해 구현하는 로직 이라고 할 수 있다.