인텔리J에서 JPA를 사용하다보면 JoinColumn등의 Annotation에서 Cannot resolve table 에러가 발생하기도 한다. name을 지정해주는 과정에서 발생하는데, 인텔리J에서 DB와 연동하여 컬럼이 존재하는지 체크하는 과정에서 발생 한 것이다. 정석적으로 인텔리j에서는 DataSource를 할당하라고 한다. 보통 hibernate에서 자동으로 테이블 생성/수정하는 경우 우리가 정해준 이름으로 DB에 적용되기를 바라기 때문에 이 깐깐한 에러를 그냥 안뜨게 하는 방법도 있다. Setting -> Editor -> Inspection에서 Unresolved Database References in Annotations 부분을 체크해제하면 된다. 전문가가 아니라 정확하지 않은 지식이 담겨..
Spring Boot를 사용하면서 Rest API 방식을 구현하다보면, Postman같은 프로그램에서는 잘만 작동되는데 실제 실행에서는 에러가 발생할 때가 있다. React (Node.js) : http://localhost:3000 Spring boot : http://localhost:8081 두 Origin 간에 프로토콜, 포트, 호스트가 같아야 Same - Origin - Policy 정책을 만족시키는데, 실제로 Origin이 다른 경우가 허다하기 때문에 서버측에서 CORS를 이용하여야 한다. 위 에러는 CORS(Cross-Origin Resource Sharing)를 하기 위해 header에 보내는 키(Access-Control-Allow-Origin)이 없다는 뜻이다. 우선 나는 검색을 통해 ..
아이디나 비밀번호 입력, 이메일 입력 등에서의 제약조건 (대,소문자,10글자 등)은 보통 js나 jquery로 Client에서 수행하는데, 이 작업을 서버(JAVA)단에서도 할 수 있는 것이다. 폼에서 전달되는 데이터를 위의 커맨드 객체(데이터 객체)에 담아 컨트롤 객체에 전달하는데, 이때 유효성 검사를 할 수 있다. Validator 인터페이스 유효성 검사를 수행해주는 객체는 다음과 같다. 우선 Validator 인터페이스를 구현하는 클래스를 만든다. validate는 유효성 검사, supports는 지원하는지에 대해 체크하는 메소드이다. Error 객체의 rejectValue 메소드를 통해 에러정보를 추가할 수 있다. public class MemberValidator implements Valida..
본 게시글은 Seoul wiz의 신입SW인력을 위한 실전 자바(Java) 스프링(Spring)을 참고하여 작성한 글입니다. Form태그, 즉 View의 데이터를 Server로 주고 받는 방식에 대해 알아보자. HttpServletReqest HttpServletRequest에 사용자가 요청한 데이터가 남겨 있고, 이를 통해 데이터를 주고 받을 수 있다. 우선 home.jsp에 다음과 같이 id와 pw를 입력받아 제출할 수 있는 양식을 만든다. action을 보면 /com/sample로 request하게 하였고, post방식을 사용하였다. 로그인 이제 Controller를 살펴보면, HttpServletRequest 객체를 받아 id와 pw에 해당하는 파라미터를 처리하고, 결과페이지로 전송함을 확인할 수 ..
본 게시글은 Seoul wiz의 신입SW인력을 위한 실전 자바(Java) 스프링(Spring)을 참고하여 작성한 글입니다. 컨트롤러 컨트롤러는 요청작업 후 뷰로 데이터 전달하는 역할을 한다. @Controller로 클래스 생성 -> @RequestMapping으로 경로 지정 -> 처리 메소드 구현 -> 뷰 이름 리턴 한번 컨트롤러를 만들어보자. HomeController의 위치 옆에 SampleController.java를 만들었다. @Controller public class SampleController { @RequestMapping("/sample") //요청 경로 public String samplecontent(Model model) { //데이터 넣기 model.addAttribute("id..
본 게시글은 Seoul wiz의 신입SW인력을 위한 실전 자바(Java) 스프링(Spring)을 참고하여 작성한 글입니다. 웹 애플리케이션 제작에 사용되는 스프링 MVC는 다음과 같다. Client에서 요청 -> DispatcherServlet에서 최초로 요청을 받는다. 이제 이 DispatcherServlet에서 요청을 Controller로 보내고, (중간에 HandlerMapping, HandlerAdapter도 들린다.) Controller에서는 처리하여 다시 DispatcherServlet으로 응답한다. 그럼 이제 다시 이 DispatcherServlet에서 ViewResolver에 보내여 사용자에게 View가 보이게 된다. MVC에서 (Model, View, Controller) Model은 이..
본 게시글은 Seoul wiz의 신입SW인력을 위한 실전 자바(Java) 스프링(Spring)을 참고하여 작성한 글입니다. 자바는 객체 지향 프로그래밍, OOP (Object Oriented Programing) AOP는 Aspect, 관점 지향. 시점을 중요시 여긴다는 뜻이다. (oop와 반대되는 말이 아님) 프로그래밍을 하면서 공통적인 기능 (ex) Log) 등이 많이 있는데, 상속을 통해 모든 모듈에 적용하는데, 근데 자바에서는 다중 상속이 불가능. 그리고 구현에 핵심 기능과 공통 기능이 섞이면 효율성이 떨어진다. 여기서 AOP가 등장한다. 공통 기능과 핵심 기능을 분리해놓고, 핵심 기능에 적용하는 공통 기능을 적용하는 방식이다. [용어] Aspect : 공통 기능 Advice : Aspect의 기..
본 게시글은 Seoul wiz의 신입SW인력을 위한 실전 자바(Java) 스프링(Spring)을 참고하여 작성한 글입니다. 외부에 따로 저장해놓은 세팅 (ID, PW, DB설정 등등)을 스프링 내에서 사용할 일이 종종 생긴다고 한다. 외부 파일의 내용을 Spring으로 가져와 사용하는 방법을 살펴보자. (주로 초기에 설정해야 할 때) 외부 파일로 환경설정 하는 법 (Environment 사용) 우선 대략적인 방법은 다음과 같다. Context로부터 -> Environment (환경설정)객체를 생성한다. 이제 이 Environment 객체 내에는 PropertySource라는 객체 형식으로 사용 할 정보들이 존재한다. 이 PropertySource 객체들을 빼서 사용하면 된다. 일단 properties라고..
본 게시글은 Seoul wiz의 신입SW인력을 위한 실전 자바(Java) 스프링(Spring)을 참고하여 작성한 글입니다. 컨테이너 생명 주기 스프링에서 컨테이너의 생명 주기는 다음과 같다. [생성-> 설정 -> 사용 -> 종료] public static void main(Strig[] args){ //스프링 컨테이너 생성 GenericXmlApplicationContext ex = new GenericXmlApplicationContext(); //컨테이너 설정 ex.load("classpath:XML경로"); ex.refresh(); //컨테이너 사용 Example example = ex.getBean("Example",Example.class); /*사용하기 . . .*/ //컨테이너 종료 ex.c..
DI (Dependency Injection) 스프링에 들어가기 앞서, 스프링의 기본 원리인 DI에 대해 살펴보자. 보통 클래스로부터 객체 생성, 이때 이 객체(X)가 여러 객체(Y, Z)에 의존관계가 있을때 (Y, Z 객체를 사용할 때) 1) 객체 X가 필요할 때 직접 Y, Z를 생성 2) 외부에서 객체 Y, Z를 생성하고 X객체에서 사용 이때 2번처럼 외부에서 객체를 생성해 넣는 것을 주입(Injection)이라 한다. 따라서 의존성을 주입한다 해서 DI(Dependency Injection)인 것이다. 이런 DI의 장점은 다음과 같다 재사용성 증가 코드 읽기 쉬움, 단순화 더 많은 테스트 코드 종속성 감소 (엮인 관계가 적음 -> 변경시 조금만 바꾸면 됨) [활용예시 1. setter] class ..
Comment