Spring
  • 스프링 부트 스프링 부트의 기반은 스프링 프레임워크다. 스프링 프레임워크는 의존성 주입(Dependency Injection) 개념을 기반으로 되어있고, XML 구성파일을 사용한다. 기능이 점차 증가되면서 XML 구성 파일을 사용하는건 점점 부담이되어, 스프링부트가 출시되었다. 스프링 부트는 스프링 프레임워크 + 서드파티(제 3자의 기업) 제품으로 구성되어있고, 핵심 모듈의 설정 방식을 개선하여 빠르게 개발할 수 있도록 스프링 프레임워크 보다 개선된 프레임워크다. 스프링 부트는 기본 구성이 적용되어있어, 추가적인 설정을 최소화하고 필요한 경우에만 구성을 작성한다. 또한 독립형 JAR 파일 기반의 런타임 모델도 지원한다. (이전에는 WAR 파일로 배포 및 실행) @SpringBootApplication 스..

    Read more
  • 현재 프로젝트 목록 Prj1. Config -> 여러 Service 프로젝트들의 Config를 공통으로 관리하는 프로젝트 Prj2. API-Gateway -> 여러 Service 프로젝트들의 Gateway 역할을 하는 프로젝트 Prj3. User-Service -> User, Order, OrderItem 등 여러 서비스 프로젝트들 중에 유저 프로젝트 User-Service 프로젝트 우선 서비스 프로젝트들 중 하나인 User-Service 프로젝트에 추가 설정을 해보자. 1) pom.xml org.springframework.boot spring-cloud-starter-bus-amqp 2) application.yml spring: application: name: user-service rabbitm..

    Read more
  • Terminal 실행 1) brew update brew update 2) rabbitmq 설치 brew install rabbitmq 설치 완료 후 설치 경로로 폴더 확인 /usr/local/sbin RabbitMQ 실행 ./rabbitmq-server 접속 확인 127.0.0.1:15672 접속 후, 로그인시 UserId, Password를 아래와 같이 입력해준다. - UserID : guest - Password : guest

    Read more
  • testconfig-{profiles} 의 yml 파일 생성하기 testconfig.yml test: message: default yml testconfig-dev.yml test: message: dev yml testconfig-prod.yml test: message: prod yml 위 파일들은 로컬 컴퓨터에 특정 폴더 안에 생성되어 있을 것이다. 해당 파일들을 git repository 에 push 한다. (예상 경로 : https://github.com/seohae/microservice-config) Config 관리 프로젝트 생성 1) SpringBoot 프로젝트를 생성하였다. ConfigApplication.java 파일 안에 아래 코드를 추가하여 Config Server로 등록하자. ..

    Read more
  • 1) pom.xml 추가 org.modelmapper modelmapper 2.3.8 2) ModelMapper 사용 UserEntity.java @Setter @Getter @Entity @Table(name = "users") public class UserEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long idx; @Column(nullable = false, length = 50) private String userId; @Column(nullable = false, length = 50) private String userName; } UserDto.java @Data public class UserDto {..

    Read more
  • 1) pom.xml org.springframework.cloud spring-cloud-starter-netflix-eureka-server 2) EurekaServerApplication.java @EnableEurekaServer /* Eureka 사용을 위한 선언 (Eureka 서버 역할로 등록) */ 위 코드를 추가하여 해당 서비스가 Eureka 서버 역할을 할 것임을 지정하자. 3) application.yml server: port: 8761 # Eureka Web Service 포트번호 spring: application: name: eurekaserver # 서비스명 eureka: # Eureka 라이브러리가 포함된채 부트가 실행되면 유레카 클라이언트 역할로써 어딘가에다 유레카를 등록한다..

    Read more
  • 설정 1) build.gradle 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' 2) @Valid 어노테이션 추가 /** * 회원 등록 * @param memberDto * @return */ @PostMapping("") public ResponseEntity addMember(@ModelAttribute @Valid MemberDto memberDto) { /* 패스워드 암호화 */ memberDto.setMemberPwd(passwordEncoding.encode(memberDto.getMemberPwd())); Member member = memberService.addMember(memberDto);..

    Read more
  • 구현 1) build.gradle 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-security:2.4.2' 2) CommonEncoder.java 생성 @Component public class CommonEncoder implements PasswordEncoder { private final PasswordEncoder passwordEncoder; public CommonEncoder() { this.passwordEncoder = new BCryptPasswordEncoder(); } public CommonEncoder(PasswordEncoder passwordEncoder) { this.passwordEncoder ..

    Read more
  • 상황 SpringBoot 프로젝트를 진행하면서 로그인/로그아웃 API를 개발할 단계가 되었다. SpringBoot 프레임워크 프로젝트에 세션 관리를 Redis로 진행해보자. Redis 설치 우선 프로젝트가 Redis를 연동할 수 있도록 Redis를 설치해야한다. docker에 redis를 간단하게 설치하였다. docker redis 설치 포스팅 : devfunny.tistory.com/424?category=820624 docker로 redis 설치 (with docker-compose) Redis 이미지 설치 docker pull redis docker-compose 파일 생성 version: '3.0' services: redis1: image: redis command: redis-server --..

    Read more
  • ElasticSearch 설치 Docker + Elasticsearch 설정하는 이전 포스팅을 참고하자. devfunny.tistory.com/365 Docker Centos7에 ElasticSearch + Kibana 설치하여 외부 로컬에서 접속하기 (with Docker Hub) 들어가기전 docker에 centos7을 설치 후, 해당 컨테이너를 실행하고 그 안에 Elasticsearch와 Kibana를 설치하여 localhost:5601로 kibana를 띄어볼 것이다. 이를 위한 순서는 아래와 같다. 1) Centos 설치 2) JDK.. devfunny.tistory.com 설정파일 생성 1) build.gradle Import /* elasticsearch */ compile 'org.sprin..

    Read more
  • application.yml 파일 spring: datasource: url: jdbc:oracle:thin:@127.0.0.1:1521:XE username: seohae password: pawd123 driver-class-name: oracle.jdbc.driver.OracleDriver Ojdbc6 나의 프로젝트 버전은 아래와 같다. id 'org.springframework.boot' version '2.4.2' Oracle DB 연동을 하기위해 Ojdbc6 을 build.gradle 에 추가했다. runtimeOnly 'com.oracle.database.jdbc:ojdbc6' 하지만 제대로 연동되지 않는다. Ojdbc6 을 포함하게되면 application.yml 파일 안의 driver-c..

    Read more
  • ResponseEntity 요즘 RESTFul API 가 많이 사용되고있는데, Restful API에서 return Type으로 사용되고있는 ResponseEntity 에 대하여 알아보자. 설명 예시 HTTP 상태코드 제어 ResponseEntity.status(HttpStatus.OK).body(testVO) 결과 데이터를 body에 담아 return ResponseEntity.status(HttpStatus.OK).body(testVO) ResponseEntity는 @ResponseBody 어노테이션과 같은 의미로, ResponseEntity를 return Type으로 지정하면 JSON (default) 또는 Xml Format으로 결과를 내려준다. 200 OK 1) return ResponseEnt..

    Read more
  • SpringBoot 에 Redis를 연동해보자 1. build.gradle 에 dependency 를 추가한다. //redis compile "org.springframework.boot:spring-boot-starter-data-redis" compile "redis.clients:jedis:2.9.0" compile "org.springframework.session:spring-session-data-redis" 2. application.yml 파일에 redis 정보를 추가한다. (.properties 파일) #Redis redis: host: 127.0.0.1 port: 6379 3. RedisConfig.java 를 생성한다. @Configuration public class RedisCon..

    Read more
  • 사용된 어노테이션 SpringBoot 프레임워크에서 Exception 처리를 공통처리를 해보자. 그전에, 알아야할 어노테이션을 정리해보자. 어노테이션 설명 @RestController @Controller + @ResponseBody 이다. Json, Xml 등의 format으로 return 해줄 경우에 사용한다. @RestControllerAdvice 기본은 @ControllerAdvice 어노테이션이 존재하는데, Json, Xml Format으로 return 해줄 경우 대신 사용한다. 웹 어플리케이션 전역에서 Exception 발생시, 해당 에러를 잡아 처리한다. @ExceptionHandler 발생한 Exception 에 따라 선택적으로 특정 메소드를 실행한다. Exception 파일 BadRequ..

    Read more
  • Reactive 의 예시 Reactive의 뜻은 반응형이다. 리액티브를 이해하기 위해서, 하나의 상황을 예로 들어보자. 한 어플리케이션에서 시간당 평균 약 1,000명의 사용자가 방문한다고 가정해보자. 톰캣을 웹 서버로 실행하고, 500개의 스레드로 톰캣 스레드 풀을 구성했다. 위 상황에서, 사용자 요청에 대한 평균 응답 시간은 약 0.250ms이다. 그럼 1초에 2,000명의 사용자의 요청을 처리할 수 있다. 그렇다면 평균 약 1,000명의 사용자가 들어오는 위 어플리케이션의 웹 서버는 평균 부하를 처리하기에 매우 충분하다. 요악하면 이 경우는 처리 능력을 기준으로 애플리케이션을 구성한 것이다. 그런데 만약, 특정 할인날에 폭발적인 고객 증가로 서버 부하가 발생했다고 가정해보자. 스레드 풀에 사용자 요..

    Read more
  • Copyright 2024. GRAVITY all rights reserved