일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 리스트
- WebClient
- 클린
- 연결 리스트
- JsonNode
- 정렬
- @ComponentScan
- 내부 정렬
- java
- 클린코드
- query
- 쿼리메소드
- code
- 인터페이스
- 마크다운
- 계산 검색 방식
- 배열
- 트리
- 코드
- 마크다운 테이블
- @RequiredArgsConstructor
- CleanCode
- 쿠키
- 클래스
- mysql
- 자료구조
- 빅 오 표기법
- 선형 리스트
- @NoArgsConstructor
- 스택 큐 차이
- Today
- Total
목록Spring (32)
Developer Cafe
취업전 공부할땐 @Autowired를 통해 의존성을 주입했는데, public class AB { @Autowired private A a; } 회사에선 @RequiredArgsConstructor을 이용해 의존성을 주입하더라고요... @RequiredArgsConstructor public class AB { private final A a; } 오늘 그 차이점에 대해 기술하고자 합니다. 우선 스프링 프레임 워크에서 의존성을 주입하는 방법엔 3가지가 있습니다. 생성자 주입 필드 주입 수정자 주입 스프링팀에선 생성자 주입이 아니라면 아래의 문구를 보여줍니다. "스프링 팀에서는 생성자 주입(constructor injection) 방식을 추천하고 있습니다." Spring Team recommends: "Al..
mono는 0~1개의 결과를 처리할때 쓰는거고 flux는 0~여러개를 처리할때 쓰는것이다. 그래서 보통 mono와는 .collectList()와 차이가 난다. @Override public List carsInfo(ShowCarsDto showCarsDto) { return WebClient.create("https://erp.dev.zzimcar.co.kr") .post() .uri("/search/v2/car/list") .bodyValue(showCarsDto) .retrieve() .bodyToFlux(ShowCarsResDto.class) .collectList() .block(); }
Mono ss = WebClient.create("https://api.dev.zzimcar.co.kr") .post() .uri("/review/") .bodyValue(wr) .retrieve() .bodyToMono(WriteReviewResDto.class); // block()이 없음 WriteReviewResDto ss = WebClient.create("https://api.dev.zzimcar.co.kr") .post() .uri("/review/") .bodyValue(wr) .retrieve() .bodyToMono(WriteReviewResDto.class) .block();// block()이 있음 return WebClient.create("https://api.dev.zzimca..
@NOARGSCONSTRUCTOR 파라미터가 없는 기본 생성자를 생성 @ALLARGSCONSTRUCTOR 모든 필드 값을 파라미터로 받는 생성자를 만듦 @REQUIREDARGSCONSTRUCTOR final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 만듦 @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor public class User { private Long id; @NonNull private String name; @NonNull private String pw; private int age; } User user1 = new User(); // @NoArgsConstructor User user2 = new User("..
www.baeldung.com/webflux-webclient-parameters WebClient Requests with Parameters | Baeldung Learn how to reactively consume REST API endpoints with WebClient from Spring Webflux. www.baeldung.com 1. 간단하게 String으로 출력해보기 String result = WebClient.create("https://api.dev.zzimcar.co.kr") .get() .uri("/review/list?getCnt=10&sp=0") .retrieve() .bodyToMono(String.class) .block(); System.out.println(res..
spring에서는 thymeleaf가 권장된다. https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#introducing-thymeleaf jstl 형식 (바꾸기전) 이전 ${ i } ${ i } 다음 thymeleaf 형식 (바꾼후) 이전 다음 결과화면 간단하게 보기
Web Layer 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역입니다. 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 이야기 합니다. Service Layer @Service에 사용되는 서비스 영역입니다. 일반적으로 Controller와 Dao의 중간 영역에서 사용됩니다. @Transactional이 사용되어야 하는 영역이기도 합니다. Repository Layer Database와 같이 데이터 저장소에 접근하는 영역입니다. Dao(Data Access Object) 영역으로 이해하면 쉽다. Dtos Dto(Data Transfer Object)는 계층 간에 데..
@After Junit에서 단위 테스트가 끝날 때마다 수행되는 메소드를 지정 보통은 배포 전 전체 테스트를 수행할 때 테스트간 데이터 침범을 막기 위해 사용합니다. 여러 테스트가 동시에 수행되면 테스트용 데이터베이스인 H2에 데이터가 그대로 남아 있어 다음 테스트 실행 시 테스트가 실패할 수 있습니다. @postsRepository.save 테이블 posts에 insert/update 쿼리를 실행합니다. id값이 있다면 update가, 없다면 insert가 실행됩니다. @RunWith(SpringRunner.class) @SpringBootTest public class PostsRepositoryTest { @Autowired PostsRepository postsRepository; @After pu..
@Column 테이블의 칼럼을 나타내며 굳이 선언하지 않더라도 해당 클래스의 필드는 모두 칼럼이 된다. 그럼에도 선언하는 이유는 기본값 외에 추가로 변경이 필요한 옵션이 있으면 사용합니다. 문자열의 경우 기본값 VARCHAR(255)인데 사이즈를 늘리거나 @Column(length = 500, nullable = false) private String title; 타입을 TEXT로 변경학고 싶거나 등에 사용한다. @Column(columnDefinition = "TEXT", nullable = false) private String content; @NoArgsConstructor 기본 생성자 자동 추가
@Entity 테이블과 링크될 클래스임을 나타냅니다. 기본값으로 클래스의 카멜케이스 이름을 언더스코어 네이밍(_)으로 테이블 이름을 매칭합니다. ex) SalesManager.java -> sales_manager table 절대 Setter 메소드를 만들지 않습니다. 해당 클래스의 인스턴스 값들이 언제 어디서 변해야 하는지 코드상으로 명확하게 구분할 수가 없기에 차후 유지보수가 너무 복잡하다 잘못된 예 public class Order { public void setStatus(boolean status) { this.status = status; } } public void OrderCencel() { order.setStatus(false); } 올바른 예 public class Order { pu..