본문 바로가기

전체 글97

[SpringBoot] 라이브러리 관리 스프링부트는 라이브러리들을 편리하게 사용할 수 있게 다양한 기능들을 제공한다고 합니다. 외부 라이브러리 버전 관리 스프링 부트 스타터 제공 이런 기능들이 없으면 수 많은 라이브러리를 직접 버전까지 골라서 선택해야 하고 라이브러리들 간에 서로 호환이 잘 되는지 확인도 해야하는 까다로운도 있다. dependencies { //2. 스프링 부트 라이브러리 버전 관리 //스프링 웹, MVC implementation 'org.springframework:spring-webmvc' //내장 톰캣 implementation 'org.apache.tomcat.embed:tomcat-embed-core' //JSON 처리 implementation 'com.fasterxml.jackson.core:jackson-dat.. 2023. 3. 11.
[JPA] JPA 영속성 관리 JPA 구동 방식 영속성 컨텍스트 엔티티를 영구 저장하는 환경 EntityManager.persist(entity); 앤티티의 생명주기 비영속(new/transient) 영속성 컨텍스트와 관계가 없는 새로운 상태 //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 영속(managed) 영속성 컨텍스트에 관리되는 상태 EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); //객체를 저장한 상태(영속) em.persist(member); 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상.. 2023. 3. 5.
[Java] HashMap Value 기준으로 정렬 먼저 map을 정렬하기 위해서 여러가지 방법이 있는데 저는 Collections.sort()를 사용하는 방법 3가지를 설명하겠습니다. Map map = new HashMap(); map.put("a", 1); map.put("b", 2); map.put("c", 3); List entryList = new LinkedList(map.entrySet()); Collections.sort()를 사용하기 위해서는 Map을 List형태로 변환해야 한다. Map.entrySet()을 이용하여 아래와 같이 Map의 Entry Set을 List 형태로 저장한다. 자바에서 Map.Entry 는 Map 형태의 인터페이스를 만드는데 사용하는데 Map을 For 문에서 돌려줄 경우 인터페이스 용도로 사용하거나 혹은스트림(St.. 2023. 1. 24.
[Spring] AOP 프록시와 내부 호출 문제 해결 방안 3가지 프록시와 내부 호출 - 문제 스프링은 프록시 방식의 AOP를 사용한다. 따라서 AOP를 적용하려면 항상 프록시를 통해서 대상 객체(Target)을 호출해야 한다. 이렇게 해야 프록시에서 먼저 어드바이스를 호출하고, 이후에 대상 객체를 호출한다. 만약 프록시를 거치지 않고 대상 객체를 직접 호출하게 되면 AOP가 적용되지 않고, 어드바이스도 호출되지 않는 문제가 발생한다. AOP를 적용하면 스프링은 프록시를 스프링 빈으로 등록하고 의존관계 주입시 프록시 객체를 주입한다. 그래서 대상 객체를 직접 호출하는 문제는 잘 발생하지 않는다. 하지만 대상 객체에서 프록시를 거치치 않고 직접 대상 객체를 호출하는 경우가 있는데 그럴 경우 문제가 발생한다고 한다. 실무에서 반드시 한번은 만나서 고생하는 문제라고 한다. .. 2023. 1. 22.
스프링 xml 설정 정리 2022.09.25 - [프레임워크/스프링] - [Spring] Spring MVC - 세팅 파일 예시 및 설명 [Spring] Spring MVC - 세팅 파일 예시 및 설명 스프링 세팅 파일에는 대표적으로 3개의 xml파일이 있다. 1. web.xml (세팅 파일 지정 및 기초 설정) 2. servlet-context.xml (서블릿 - 화면 이동에 관한 세팅) 3. root-context.xml(DB 정보 세팅) web.xml만 이름이 soso-shs.tistory.com 여기서는 기본적인 정보를 정리함 이글을 보면서 참고 하시면 더욱 이해가 쉬움 web.xml에 먼저 servlet설정을 위해 선언함 contextConfigLocation classpath*:glabfw/spring/com/**/c.. 2023. 1. 17.
웹 서버와 WAS의 차이 웹서버 (Web Server) 웹서버는 HTTP프로토골을 기반으로 클라이언트 즉 사용자가 (웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당하는 서버이다. 주로 정적인 컨텐츠 (.html, jpeg, css 등)을 제공한다. 동적인 컨텐츠도 웹서버가 제공할수있다. 동적 컨테츠를 요청받으면 WAS에 요청을 넘겨서 WAS에서 처리한 결과를 사용자에게 다시 전달해주는 역할도 한다. 가장 유명한 웹 서버 :apache WAS DB조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위한 서버이다. 웹 서버 기능을 구조적으로 분리하고 따로 처리하기위한 목적으로 제시되었다고 한다. 현재는 was도 정적인 컨텐츠를 처리하는데 있어서는 성능상 큰차이가 없다 하지만 기능적으로 분리를 하기도 한다고 .. 2023. 1. 12.