반응형 IT/Java394 reflection 를 통해 MapToObject 만들기 이번 포스팅은 저번에 이어서 reflection 를 더 잘 사용하기 위한 포스팅이다. reflection에 대한 내용은 아래 참고 포스팅을 활용 바란다. 아래 예시는 Map으로 Dto를 만들기 위한 샘플 메서드 이다. public static Object mapToObject(Map map, Object obj){ String keyName = null; String methodName = null; Iterator itr = map.keySet().iterator(); while(itr.hasNext()){ keyName = itr.next().toString(); methodName = "set"+keyName.substring(0,1).toUpperCase()+keyName.substring(1);.. 2023. 4. 10. Spring security 설정으로 인한 401 Unauthorized 에러 새롭게 springboot 프로젝트를 만들고 restapi 통신을 해보니 에러도 안뜨고 통신도 안되었다. 그리고 상태값 하나를 뱉어내었다. (401 Unauthorized 발생) 그러면서 추가적으로 header 에 Access-Control 관련된 에러들이 발생하였다. 모두 공통점은 security 관련 에러이다. 허용되지 않은 곳에서 호출이 되기에 리턴을 못해주는 경우이다. 해결책은 간단하다. security 를 cors로 값을 맞춰주거나 test환경이라면 spring security 관련을 pom.xml 에서 제거해주면 해결이 된다. cors란 아래 참고 포스팅 참고 바란다. 참고 포스팅 https://thenicesj.tistory.com/329 CORS 란? 한가지 극단적인 예를 들어본다면, 만약.. 2023. 4. 7. java 에서 동적 메서드 (reflection) Reflection 이란? 자바에서 메서드를 사용할때 대부분 구체적인 메서드를 가지고 개발을 하지만 동적으로 작업을 하던가, 구체적인 클래스 타입을 알지 못하더라도 해당 클래스의 메서드, 타입, 변수들에 접근을 해주는 자바 API 이다. 디버깅 단계에서가 아닌 런타임 시에 클래스를 가져오는 경우 해당 API를 자주 사용하게 된다. 예제는 아래와 같다. class Member { String id; Member() { this.id = "name"; } Member(String id) { this.id = id; } int getId() { return this.id; } } 이렇게 Member 클래스가 존재한다. 생성자 찾기 getDeclaredConstructor()를 이용해 클래스로부터 생성자를 가져.. 2023. 4. 4. [error] javassist.tools.web.Webserver <port number> eclipse 내에서 자바 버전을 변경후 새롭게 run을 하니 javassist.tools.web.Webserver 이런 에러가 나왔다. 이유는 이미 자바가 다른 버전으로 프로세스가 실행 되고 있거나 혹은 톰캣서버가 실행되고 있을 이유인 경우가 많다. 에러 문구를 보니 webserver라고 되어있어서 톰캣 오류일 듯 싶다. 해결법은 사용중인 프로세스를 죽이고 다시 실행하면 되지만, 더 간단한 방법은 eclipse를 재실행 하거나(자바 프로세스 재실행) 피시를 재 기동 하면 프로세스들이 새롭게 로드 되기에 해결할수 있다. 2023. 4. 2. java 에서 switch 문 이전 포스팅에서 switch 에 대해서 작성한 것이 있다. 자세한 사항은 아래 참고 포스팅 참고 바란다. 이번 포스팅에서는 기본 문법은 알고 있을테고, 자바 14버전 이후로 사용 가능한 표기법이 있어서 소개하는 포스팅을 다뤄볼 것이다. 기존 switch 문은 아래와 같다. switch(test) { case "a": System.out.println("a 입니다."); break; case "b": System.out.println("b 입니다."); break; case "c": case "d": System.out.println("c 입니다."); break; default: System.out.println("없습니다."); break; } 여기서 지금 다룰 부분은 case "c": case "d".. 2023. 3. 30. ApplicationContext(스프링 컨테이너) ApplicationContext를 스프링 컨테이너라고 한다. ApplicationContext는 BeanFactory 인터페이스의 하위 인터페이스이고, ApplicationContext는 BeanFactory에 부가기능을 추가한 것이다. 자세한 기능에 대해서는 공식 홈페이지에 명시되어있으니 한번 확인해보는것도 좋을듯 하다. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/ApplicationContext.html ApplicationContext (Spring Framework 6.0.7 API) Expose AutowireCapableBeanFactory functionality fo.. 2023. 3. 28. Mylyn 이란? 먼저 위키백과에서 소개하는 마이린이란 다음 내용이다. 마일린(영어: Mylyn)은 태스크 관리를 위한 이클립스 서브시스템이다. 프로젝트 이름은 미엘린(Myelin)에서 왔다. 마이엘린은 신경을 절연시켜 전기 신호가 신경 섬유를 통해 신속하게 이동하는 데 도움을 주는 것으로서 신경세포의 축삭을 싸고 있다. 프로젝트의 옛날 이름은 마이라(Mylar)였다. 그러나 그 이름은 boPET 필름 회사의 상표였기 때문에 이클립스 재단이 프로젝트 이름을 변경하였다. https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%BC%EB%A6%B0 마일린 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. --> ko.wikipedia.org 이클립스에 설치를 하며 프로젝트 관리를.. 2023. 3. 25. spring project 만들기 with Initializr Spring initializr란? spring에서 제공하는 spring initializr 웹도구를 사용해서 spring 프로젝트를 만드는 방법이다. 사용법 먼저 만들어주는 사이트를 접속한다. https://start.spring.io/ 다음은 옵션선택을 한다. - project : 사용할 빌드 툴 선택 maven 과 gradle 은 아래 참고 사이트를 비교해보면 도움 될것이다. - Language : 언어선택 -Spring boot : 버전선택 shapshot이 붙은것은 현재 개발중인 버전, M이 붙은건 정식릴리지 되지 않은 버전, 아무것도 붙어있지 않는 것이 정식릴리즈 버전이다. 아래 참고 포스팅이 도움 될 것이다. - Project Metadata group : 보통 기업의 도메인명, 자유롭게 작.. 2023. 3. 10. [mybatis] 자바에서 mybatis 자바 포스팅에 ORM 관련 포스팅이 다수를 이루지만 예전부터 자바 개발을 해온 사람이라면 mybatis가 더욱 친근할 것이다. 이번 포스팅에서는 스프링부트에서 사용하는 @Mapper 를 사용한 mybatis를 다뤄보려고 한다. controller 단은 모두 생략하고 결국 repository 부분만 다뤄볼 예정이다. 기존에 mybatis에서는 DAO 라는 개념이 존재하였다. Data Access Object 의 약자로 코드에서 데이터베이스와 통신을 하는 부분이다. 하지만 스프링부트에서는 이 DAO부분을 mapper 가 대신 해줄수 있다. 먼저 mapper 는 interface로 구현을 하며 아래와 같이 예시를 주면 @Mapper interface MemberMapper { @Select(MemberSQL... 2023. 3. 3. 이전 1 ··· 24 25 26 27 28 29 30 ··· 44 다음 반응형