반응형 IT/Java394 Spring 6.0 / SpringBoot3.0 에 대해 스프링 5.X 버전과 SpringBoot 2.X 이 나온지 얼마 전 같은데 벌써 다음 릴리즈가 준비가 되었고 이에 대한 내용을 포스팅 써본다. 현재의 상황을 정리해보면 스프링 공식 홈페이지에서 이렇게 설명들이 올라와 있다. 위 두사진 처럼 spring6에 대한 설명과 이와 같은 springboot3 에 대한 얘기도 있다. 궁극적으로 이전 버전들과의 차이점이 결국 제일 중요한데 그것들에 대해 정리를 해보면 다음과 같다. 차이점 Spring 5.x -> 6.0 달라지는 점 Java 17기반으로 변경 일부 Java EE API 지원 종료 (아래 참고 포스팅 참조 Jakarta) XML이 점차적으로 Spring에서는 사라지게 될 것 RPC 지원 종료 새로운 AOT 엔진 도입 (밑에 설명 추가) @Inject 같.. 2022. 11. 20. 공백 제거 trim() / strip() 자바에서는 스트링의 공백을 제거 하기 위해서는 java.lang.String 클래스 안의 trim() 과 strip() 메서드를 사용할수 있다. 둘의 차이는 다음과 같다. String text = " abc "; String trimStr = text.trim(); String stripStr = text.strip(); 이렇게 하고 둘을 출력해보면 trim -> "abc"; stip -> "abc"; 결과는 동일하다. 둘 모두 앞뒤의 공백을 제거 하였다. 그렇다면 궁극적인 차이는 무엇일까? 바로 다음이다. trim() 은 '\u0020' 이하의 공백들만 제거 strip() 은 유니코드의 공백들을 모두 제거 유니코드에는 우리가 일반적으로 많이 사용하는 스페이스('\u0020'), 탭('\u0009) 등 .. 2022. 11. 19. JpaRepository 관련 쿼리메서드 JPA 를 사용하게 되면 repository 에서 JpaRepository 를 상속 받아서 해당 repository의 메서드를 사용할수 있다. 대표적으로 findById 가 있는데 비슷한 메서드 들을 좀더 알아보기 위해 포스팅을 작성해본다. 설명 Query JPA 컬럼 1개 조회 select * from Table where id = 1; findById 컬럼 여러개 조회 select * from Table where id = 1 and name = "name"; findByIdAndName 중복제거 조회 select distinct * from Table; findDistinctBy 상위 10개 조회 select * from Table where rownum = ?1 After findByStartDa.. 2022. 11. 16. Java 와 Jakarta 자바의 변천사에 대해서 알아보면 자바는 JavaEE 와 J2EE 등 플랫폼으로 사용되다가 최근 2018년도부터는 자카르타EE로 명칭을 바꾸고 새로운 변화를 시작했다. Java EE 1999년 썬 마이크로시스템즈가 J2EE(Java 2 Enterprise Edition) 명으로 발표한 분산 애플리케이션 개발 목적의 산업 표준 플랫폼이다. 기업용 앱을 개발 하기 위한 기술과 환경을 제공하며 서블릿(Servlet), JSP, EJB, JDBC 등의 기능을 제공한다. 자바EE의 주요 목적은 특정 운영체제와 미들웨어에 종속되지 않고 정보 교환 및 애플리케이션 호환이 가능한 플랫폼을 제공하는 것이다. 자바EE는 출시 초창기에 기업용 자바 플랫폼이라는 새로운 생태계를 열며 큰 성과를 이뤘지만 현재는 상업용 플랫폼의 .. 2022. 11. 13. 이클립스 workspace 저장위치 확인 및 바꾸기 이클립스 프로젝트 파일이 저장되는 위치는 workspace로 설치시에 이 폴더를 지정한다. 이클립스를 여러개 설치해서 사용하다보면 workspace의 실제 디스크상의 위치가 잘 기억나지 않기도 하는데 이때 확인하는 법은 이클립스를 실행한 후 메뉴에서 "File -> Switch Workspace -> Other..." 를 선택 현재 지정된 workspace의 위치를 확인할 수 있고, 새 위치로 변경할 수도 있다 이클립스를 처음 설치하면, 시작할때마다 workspace를 선택하도록 물어보는 창이 뜨는데 그 창에서 "Use this as the default and do not as again" 을 체크하면 다음부터는 물어보지 않는다 시작할때 다시 workspace를 선택하도록 물어보게 하려면 메뉴에서 "W.. 2022. 11. 9. @Controller와 @RestController 결론 먼저 말하면 둘의 차이는 HTTP Response Body가 생성 유무로 나뉜다. 즉 RestController 는 Controller + Response Body 이다. @Controller 전통적인 Spring MVC의 컨트롤러 View 를 사용 @ResponseBody를 사용할 경우 View 대신 Controller에서 직접 데이터 리턴 가능 @RestController RESTFUL 웹서비스에서 컨트롤러 반환 객체 데이터 타입 : JSON/XML 타입의 HTTP 응답을 직접 리턴 실행 흐름 @Controller Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet.. 2022. 11. 7. POJO 방식 자바나 스프링을 사용해본 사람이라면 POJO 라는 단어를 들어봤을 것이다. Plain Old Java Object 의 약자로 오래된 방식의 간단한 자바 오브젝트 라는 뜻이다. 요즘엔 스프링이라는 프레임워크도 있고, 다양한 라이브러리들이 나오고 오픈소스 라이브러리 등 기존 소스보다 더 많은 부분을 자바에서 다양한 부분들이 자리잡고있다. 스프링이 처음 출시된 2004년 이전에는 그리고 그 더 이전에는 자바로 프로그래밍을 하기 위해서 하나하나 손수 전부 코드로 짰었다. 예를들어 getter / setter 를 보면 dto에서 코드로 설정할수 있지만 요즘엔 @Getter / @Setter annotation으로 대체하는 경향들이 있다. 아래 참고 포스팅을 보면 이미지에서 POJO 라는 단어가 있다. 자바에선 유.. 2022. 10. 27. @builder annotation jpa를 사용중에 entity를 사용하게 되면 일반적인 DTO 와는 다르게 annotation을 주의해서 써야한다. 대표적으로 setter 가 있긴하지만 그 밖에도 builder 부분에서 주의를 해줘야한다. 서비스 단에서 builder를 사용하지 않고 만약 Member member = new Member(); 라고 member를 생성하게 된다면 구문적으로는 틀린 부분이 없지만 persistence 부분에서는 빈값이 되어버려서 에러가 발생한다. 그럴경우에 생성자를 사용할때 new 가 아니라 build를 사용해줘야한다. 사용법은 아래와 같다. 만약 entity 가 int id; String name; 두개만 있다는 가정 하에 Member member = Member.builder().id(1).name("n.. 2022. 10. 26. Error creating bean with name 'entityManagerFactory' 프로젝트 실행시 제목과 같은 Error creating bean with name 'entityManagerFactory' 라는 에러가 나면서 실행이 되지 않았다. 사용중인 데이터프레임워크는 JPA였고 해결법은 오랜만에 Entity를 설정하다보니 @Id를 설정하지 않고 repository 에서 extends를 한것이 문제였다. 결론은 @Id 어노테이션을 entity 에 설정해줌으로써 해결. 다른 어노테이션들은 아래 참고 포스팅을 보면 도움이 될것이다. 참고 포스팅 https://thenicesj.tistory.com/274 JPA에서의 어노테이션 JPA에서나 Springdata JDBC에 사용되는 어노테이션에 관해서 다뤄볼 것이다. 엔티티 관련 @Entity 당 어노테이션을 붙이게 되면 해당 클레스가 데.. 2022. 10. 22. 이전 1 ··· 31 32 33 34 35 36 37 ··· 44 다음 반응형