일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Greedy
- QueryDSL
- 자바
- transaction
- JDBC
- JPQL
- Servlet
- 백준
- 스프링 핵심 원리
- AOP
- Android
- 알고리즘
- spring
- 스프링 핵심 기능
- 인프런
- Exception
- SpringBoot
- 스프링
- pointcut
- kotlin
- Thymeleaf
- db
- Proxy
- 그리디
- 김영한
- jpa
- springdatajpa
- Spring Boot
- java
- http
- Today
- Total
목록Spring Boot (25)
개발자되기 프로젝트
1. Ioc(Inversion of Control) 스프링에서는 일반적인 JAVA 객체를 new로 생성하여 개발자가 관리하는 것이 아닌! Spring Container에 모두 맡긴다. 즉, 개발자에서 -> 프레임워크로 제어의 객체 관리의 권한이 넘어간다! : "제어의 역전" 2. DI(Dependency Injection) 의존성 주입을 뜻함. DI 장점 - 의존성으로 부터 격리시켜 코드 테스트에 용이하다. - DI를 통하여, 불가능한 상황을 Mock과 같은 기술을 활용하여, 안정적으로 테스트 가능. - 코드를 확장하거나 변경할 때 영향을 최소화 한다.(추상화) - 순환참조를 막을 수 있다. 3. Bean Spring IoC 컨테이너에서 관리하는 객체를 뜻하며, ApplicationContext.ge..
AOP : Aspect Oriented Programming (관점 지향 프로그램) 핵심적인 관심사항(Core Concern)과 공통 관심 사항(Cross cutting concern)으로 분리하고 각각을 모듈화 하는 것. 예를 들어 각 메서드마다 실행 전후 log를 남기고 싶다?? 모든 method다마다 일일히 추가하는건 귀찮기도하고.. 숫자가 많아지면 수정 시 놓칠 가능성도 있음. 따라서 부가기능으로 AOP를 적용하여 log남길 수 있음. 1. @Aspect : 구현하고자 하는 횡단 관심사의 모듈. 한개 이상의 포인트컷과 어드바이스의 조합으로 만들어진다. 2. Advice : 실질적인 부가기능을 담은 구현체? aspect가 무엇을? 언제? 할지 정의함. 3. execution : A..
1. @Api 기존에 작성한 controller에 @Api(tags = {""}를 추가하자. ""안에 간단한 tag를 입력할 수 있는데. swagger ui에 보여지는 이름?이라고 보면 된다. @Api(tags = {"API 정보를 제공하는 Controller"}) @RestController @RequestMapping("/api") public class Controller { @GetMapping("/hello") public String hello(){ return "hello"; } } swagger-ui를 새로고침하면 이름이 바뀐걸 볼 수 있다. 2. @ApiParam controller내에 pathVariable, query parameter을 변수로 받아 두 값을 더하는 method를 작성..
Swagger : 개발한 REST API를 편리하게 문서화 하여 관리 및 제3 사용자가 편하게 API를 호출해보고 테스트 할 수 있는 프로젝트 SpringBoot는 springfox-boot-starter를 아래와 같이 gradle dependencies에 추가하주면 사용이 가능. implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0' 근데! 노출되면 안되는 곳에서 사용할 땐 주의해야 한당. @APi 클래스를 swagger의 resource로 표시 @ApiOperation 특정 경로의 operation HTTP method 설명 @ApiParam opration parameter에 meta data 설명 ..
MVC 란? Model View Controller의 약자로 프로젝트의 구성 요소를 세가지의 역할로 구분한 디자인 패턴을 말한다. Model 은 '데이터' 디자인을 담당한다., 어떤 동작을 수행하는 코드 ex. 상품 목록, 주문 내역 등 View 는 사용자가 볼 페이지를 담당. Controller 는 model과 view의 중간다리 역할.
@EqualsAndHashCode 특별히 JPA에서 @EqualsAndHashCord를 사용할 일 많이 없음. 다만 @Data에서 구현하고 있는 내용이고 자바에서 객체의 동등성을 비교하기 위해서 equals method와 hashCode method를 overriding을 권장. 따라서 entity 객체를 만들 때에도 equals, hashCode toString을 overriding하는게 권장됨. @Data Entity 객체를 사용하면서 가장 많이 사용할 annotation @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode. 다 제공함. @Builder @AllArgsContructor와 비슷하게 객체를 생성하고 필드값을 주입해..
내가 작성한 테스트 코드가 어디까지 커버하고 있는지 확인이 하고 싶더., Jacoco : JAVA 코드의 코드 커버리지를 체크하는 라이브러리로 결과를 html, xml, csv로 확인이 가능! Jacoco 사용을 위해서는 build.Gradle의 plugins에 아래와 같이 jacoco를 추가해 준다. plugins { id 'org.springframework.boot' version '2.4.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'jacoco' } 아래 캡쳐와 같이 jacoco가 Gradle에 추가된것을 볼 수 있다. 그리고 jacoco report가 나오기 위해서는 test가 반드시 실행되어야 한다..
JUnit-1에서 작성한 내용을 spring에서는 어떻게 작성해야 하는지 알아보자. 1. DollarCalculator 수정 먼저 Spring에서 bean으로 관리하기 위해 @Component 지정. 그리고 이전 코드에서는 marketApi객체를 생성자에서 주입받아서 사용을 했었다. DollarCalculator class가 @Component기 때문에 MareketApi class도 마찬가지로 @Component등록이 필요하다. 참고로 @RequiredArgsContructor는 final, @NotNull인 인필드 값만 생성자에 주입을 시켜준다. @Component @RequiredArgsConstructor public class DollarCalculator implements ICalculato..