본문 바로가기

Spring

(57)
Clean Code with Spring 코드는 깃에 올리는 순간 내 코드가 아닌, 남들이 읽어야 하는 "책"이 된다. 1. 코딩 할 때 생각을 하며 코딩하는가? - 코드에 중복된 부분은 없는가? - 코드가 무엇을 하는 것인지 이해가 직관적으로 되는가? - 코드의 위치가 적절한가? - 수정을 염두하여 개발하였는가? 2. 객체 지향적인 코드를 짯는가? - 다른 오브젝트에게 필요한 작업을 해달라고 요청한다. Controller > Service > DAO 3. 테스트 하기 좋은 코드인가? - 한개씩 테스트하려면 ( 테스트 코드를 작성하기 편하려면) 역할분리 / 종속코드줄이기 필요 ex > MailSender 로 코드를 작성하고 DI 로 MockMailSender or SMTPMailSender를 주입해준다. 4. 함수명 , 함수인자 4개이하 5. ..
WebSocket 기본 웹소켓이란? - 두 프로그램 사이에서 메세지( 텍스트와 바이너리 ) 를 주고 받기 위한 통신 방법중 하나 특징 - 양방향 통신이다. 데이터 송수신을 동시에 처리할 수 있다. - 클라이언트와 서버가 각각 서로 원할 때 송신을 할 수 있다. tip ) HTTP 통신은 클라이언트가 요청을 보낼 때만 서버가 응답해주는 단방향 통신이었다. - 실시간 네트워킹 : 웹환경에서 연속된 데이터를 빠르게 노출 시켜야 할 떄 ( 채팅, 주식, 데이터 ) - HTTP 핸드쉐이킹을 하기 떄문에 HTTP 헤더를 사용한다. 그리고 기존 포트 ( 80 / 443) 을 사용한다. 비슷한 기술 Polling : 서버로 일정 주기로 request 송신하는 기술 Realtime 통신에서 폴링을 쓴다면, 언제 통신이 발생할지 모르니 주기적으..
Stateful / StateLess 요즘 Stateless 서비스가 각광받고 있다. 그에따라 Stateless 와 Stateful 의 차이점은 무엇인지 알아보고 더 나아가 HTTP / REST 간 관련성에 대해 알아보자. 1. 기초 서버가 클라이언트의 상태 정보를 저장하느냐 or 마느냐 2. 세션의 측면 stateful - 서버와 클라이언트 간의 세션이 있다. 서버는 세션의 상태(State)에 기반하여 response 를 보낸다. 즉, 세션 상태를 포함한 CLient와 세션정보를 Server에 저장한다. stateless - 서버는 오로지 클라이언트의 요청에 대해 응답만 하며 세션 관리는 클라이언트가 담당한다. 3. 예시 State ful : TCP ( 3HandShaking 의 SYN / SYNACK ) - 세션에 앞으로 수신해야할 데이..
Controller 테스트 코드짜기 @RunWith(SpringRunner.class) //get 을 누구한테 요청할것인가. Spring Runner에게 요청할 것이다. @WebMvcTest(RestaurantController.class) // 컨트롤러 테스트한다는 것 class RestaurantControllerTests { @Autowired private MockMvc mvc; @Test public void list() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/restaurants")) .andExpect(status().isOk()) .andExpect(content().string( StringContains.containsString("\"name\":\"B..
인텔리제이 단축키 shift +_ ctrl + spacebar = import 가능한 모든 클래스 보기 alr + enter = 수정가능한 행위 보기
Lombok 설정방법 ( Gradle / Intellij) build.gradle 에 다음의 코드를 추가한다. configurations{ compileOnly{ extendsFrom annotationProcessor } } build.gradle속에 있는 dependencies{ 안에 다음을 추가해준다. compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor'rog.projectlombok:lombok' 티스토리 문제인지 코드가 이상하게 보이네요. 복붙해서 사용하세요 코끼리 클릭 -> refresh 선택
Spring 콘솔에 내용 출력하는 방법? 간단한 디버깅을 할때 콘솔에 프린트문을 이용해서 많이들 했었다. 우리는 spring 을 할떄는 어떻게 하면 좋을까? 웹의 특성상 디버깅이 더 복잡하기 때문에 작은 프로젝트에서는 print 를 이용한 디버깅들이 시간상 빠르게 도움이 될떄가 많다. 우리는 logger를 통해서 Console 에 내용을 찍어볼것이다. import org.slf4j.Logger; import org.slf4j.LoggerFactory; @RestContorller public class AAAController{ private static Logger logger = LoggerFactory.getLogger(AuthController.class); //1 @GetMapping("") public ResponseEntity aa..
Front 에서 Http 통신하는데 Access to XMLHttpRequest at' ~ ~ ~ ' from origin '~ ~ ~' has been blocked by CORS policy 에러!!!! 에러문장 Access to XMLHttpRequest at 'http://localhost:8080/api/boards' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 해결방법 백엔드서버에서 해주는 응답에 다음헤더 넣어주기 HttpHeaders headers = new HttpHeaders(); headers.set("Access-Control-Allow-Origin", "*"..