Spring Boot 18

[Spring] IOC Container

IOC(Inversion Of Control : 제어의 역전) 내가 직접 인스턴스를 생성하지 않고, 외부에서 의존성을 주입(Dependency Injection) 해주는 것. 1. 내가 직접 인스턴스를 생성하는 경우, public class MemberService { // 의존성을 내가 직접 결합 private final MemberRepository memberRepository = new MysqlMemberRepository(); . . . } 2. 외부에서 의존성을 주입 해주는 경우, - 주입 받는 부분 public class MemberService { private final MemberRepository memberRepository; // 생성자 주입 패턴 public MemberServ..

Spring Boot 2021.10.20

[Spring Boot] Gradle 로 빌드 하는 법

1. 자신의 프로젝트 폴더로 이동 cd C:\springboot\hello-spring\ 2. 빌드 명령어 입력 // build 폴더를 생성한다 ./gradlew build // build 폴더를 삭제하고 다시 빌드 ./gradlew clean build BUILD SUCCESSFUL 메시지가 뜨면 성공 - Maven 일 때 // target 폴더 안에 .jar가 생성됨 ./mvnw package 3. build/libs 폴더에 생성된 jar 파일을 확인한다. 일반적으로 서버에 배포할 때는 hello-spring-0.0.1-SNAPSHOT.jar 파일을 서버에 올려서 실행하면 배포 완료. 4. jar 파일 실행 방법 java -jar hello-spring-0.0.1-SNAPSHOT.jar 5. jar ..

Spring Boot 2021.10.17

[Java] 8 에서 11로 변경 잘 안될 때

1. 윈도우키 눌러서 '고급' 검색 후 '고급 시스템 설정 보기' 클릭 2. 시스템 속성 -> 환경변수 클릭 3. 시스템변수에서 JAVA_HOME 더블클릭 후 경로 11버전으로 변경 4. 시스템변수 Path 더블클릭 후 편집 -> java 11 을 제일 상단으로 옮긴다. oracle 설정이 java 보다 위에 있을 때 버전 변경이 안되는 경우가 있음 5. cmd를 종료 후 다시 관리자모드로 켠다 관리자로 켜지 않으면 변경사항이 제대로 보이지 않는 경우가 있음 javac -version java -version 둘다 확인 C:\>javac -version javac 11.0.6 C:\>java -version java version "11.0.6" 2020-01-14 LTS Java(TM) SE Runti..

Spring Boot 2021.10.17

[Spring] AOP 관점 지향 프로그래밍

AOP(Aspect Oriented Programming) 관점 지향 프로그래밍이란 무엇인가? 횡단 관심사(Cross Cutting Concern), 말이 어렵다. 어려운건 역시 그림으로.. 위 그림처럼 여러가지 로직들에 공통적으로 들어가는 로직이 있을 것이다. 예를들면 로그같은 것들은 여러 로직들의 상/하단에 들어가는 경우도 많다. 이렇게 횡단으로 분류할 수 있는 관심사를 Cross Cutting Concern 이라고도 부른다. 이런경우, 로그의 내용을 변경하고 싶을 때마다 여러 로직들을 모두 찾아다니면서 수정해야 하는 불편함도 있다. 그래서 공통적으로 들어가있는 로직들을 따로 분리해서 모듈화 하는것을 AOP라고 한다. 특징은, 소스코드도 아예 로직에서 제거하는 것이고, 이 제거한 코드를 실행 시켜줄수..

Spring Boot 2021.10.17

[Spring Boot] 스프링부트 간단 세팅 3분컷!!

1. 스프링부트 사이트 접속 2. 세팅파일 생성 3. 다운로드 된 세팅 파일 압축 해제 4. IDE 에서 프로젝트 불러옴 5. Hello World 위 순서로 하면 되고, 글로 적어보니 순서가 복잡한것 같지만 실제로 해보면 상당히 간단함. 1. 스프링부트 사이트 접속 https://start.spring.io/ 2. 세팅파일 생성 원하는 세팅을 고른 후 GENERATE 버튼 클릭하면 세팅된 파일이 다운로드 됨 내가 한 세팅 - Gradle - Java Language - Spring Boot 2.5.5 - Jar Packaging - Java 8 Version Dependencies - Spring Web - H2 Database - Mustache - Spring Data JPA 3. 다운된 zip 파..

Spring Boot 2021.10.16

[Spring Boot] 로그레벨 Debug 설정

src/main/resources/application.properties 파일에 아래와 같이 logging.level 접두사로 세팅 가능 # Logging logging.level.org.springframework=info logging.level.org.springframework.web=debug logging.level.org.hibernate=error https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.logging “How-to” Guides Spring Boot has no mandatory logging dependency, except for the Commons Logging API, whic..

Spring Boot 2021.10.16

[DTO] 를 더욱 안전하게 사용하는 방법

DTO를 안전하게 사용하자 - setter 를 없애고 생성자를 이용하여 set한다. - 개발자가 의도적으로 new로 인스턴스를 생성하지 않는 이상 계층간 이동시 데이터가 변조될 위험이 없다. 코드예시 : - DTO public class UserDto { private final String name; private final Integer age; // setter를 없애고 생성자로 데이터를 초기화 해서 계층간에 DTO가 변조되지 않게 함 public UserDto(String newName, Integer newAge) { this.name = newName; this.age = newAge; } public String getName() { return name; } public Integer ge..

Spring Boot 2021.10.16

DTO vs VO

정의 DTO(Data Transfer Object) : - 계층 간 데이터를 전달하기 위해 사용하는 객체 (Controller Service 등) - 데이터를 담아서 전달하는 바구니 - getter/setter 메소드만을 갖는다 이외의 다른 메소드는 필요가 없다 (오직 데이터를 담아서 전달만 하는 객체이기 때문) - setter가 있기 때문에 값이 변할 수 있지만, 의도적으로 setter를 없애고 생성자로 값을 넣어서 불변하게 사용하는 것이 각 계층간 이동시 동일한 값을 보장하기 때문에 더욱 안전하게 사용 가능 예시코드 : - dto 클래스 public class userDto { private String name; private Integer age; public String getName() { r..

Spring Boot 2021.10.16
반응형