본문 바로가기
반응형

Spring13

스프링 컨트롤러 파라미터 한글 깨짐 현상 ... @GetMapping("/{itemName}") public BaseResponse getItemContainingName(@PathVariable String itemName) { return new BaseResponse(ItemSearchResponseDto.toDtos(itemSearchBO.getItemContainingName(itemName))); } 컨트롤러에서 파라미터로 itemName 이 한글로 들어오게 되는데, 들어올 때 한글이 깨진 상태로 들어오는 문제가 있었다. 방법을 찾아봤는데 원인은 Tomcat 의 server.xml 인코딩 세팅이 default 가 8859_1 로 잡혀있기 때문이었다. 이것을 UTF-8 로 세팅해주면 된다. 로컬에서 다운받은 Tomcat 의 conf.s.. 2022. 4. 11.
토비의 스프링 - 1장 (p.1 ~ 87) 학원에서는 스프링 부트로 처음 스프링을 접했는데, 취직을 하고 지금 진행하는 프로젝트에서는 스프링 3.0으로 업무를 보는것이 아닌가.. 스프링의 개념을 다잡기 위해서 스프링의 명서인 토비의 스프링을 공부하게 되었다. 스프링 삽질의 시작 스프링 부트 와 가장 체감이 되는 부분은 Gradle 설정 부분이었다. 스프링 부트는 spring-boot-starter 를 통해서 연관된 의존성을 자동으로 땡겨올 수 있는데 스프링은 일일히 필요한 의존들을 심어줘야한다는 점이 정말 불편했다. DB는 H2 를 사용했는데, 처음에는 다음과 같이 url 경로를 설정하니까 에러가 발생했다. jdbc:h2:~/study Exception in thread "main" org.h2.jdbc.JdbcSQLException: Datab.. 2020. 6. 22.
스프링 3대 핵심 - ② PSA (Portable Service Abstraction) PSA 잘 만든 인터페이스 확장성이 좋지 못한 코드 or 기술에 특화되어 있는 코드 테스트하기 힘들다 변화에 유연하지 못함 잘 만든 인터페이스 JDBC를 쓰다가 하이버네이트로 전환해야 하는 상황 JDBC를 하이버네이트로 변경 했지만, 나의 코드가 바뀌지 않는다 스프링이 제공해주는 대부분의 API가 PSA다. (약 90%) ex) Resources, Transactions, JDBC, ORM ... 대표적인 PSA @Transactional PlatformTransactionManager 인터페이스를 사용해서 구현되어있음 구현체 종류 JpaTransactionManager / DatasourceTransactionManager ... 따라서 빈이 바뀌더라도 트랜잭션을 처리하는 Aspect 코드는 바뀌지 않.. 2020. 2. 18.
스프링 3대 핵심 - ① IoC (Inversion of Control) IoC 제어의 역전 IoC가 아닐경우 private Person person = new Person(); 내가 쓸 놈은 내가 만들어서 쓸게.. IoC인 경우 private Person person; public PersonController(Person person) { this.person = person; } 내가 쓸 놈은 이 놈인데, 누군가 알아서 주겠지.. IoC 컨테이너 빈들의 의존성을 관리 (빈이 아니면 관리 X) IoC 컨테이너의 종류 1) BeanFactory 빈의 등록 / 생성 / 조회 / 반환을 관리함 getBean()을 호출해야 빈을 생성함 (Lazy Loading) 2) ApplicationContext BeanFactory 인터페이스를 상속하여 좀 더 많은 기능을 제공한다 Bean.. 2020. 2. 18.
Spring-PetClinic 프로젝트 실습 1 이 프로젝트는 Spring에서 제공하는 동물병원 접수 사이트 프로젝트다. 프로젝트 실습을 통해서 스프링의 핵심 기술인 'IoC, AOP, PSA'를 학습해보자. 실습과정은 여기의 gbeea1004브랜치를 통해 확인할 수 있다. 먼저 로그레벨이 INFO로 되어있어 좀 더 자세한 정보를 보기위해 DEBUG레벨로 변경시켜주자. 설정은 resources - templates - application.properties에서 할 수 있다. # Logging logging.level.org.springframework=INFO logging.level.org.springframework.web=DEBUG // 웹 에서는 DEBUG로 설정그 후 다음과 같은 요구사항에 맞게 코드를 수정하자. # 요구사항 .. 2019. 5. 14.
1.1 초난감 DAO # 서론 코드스쿼드 레벨 3 과정을 진행하면서 스프링의 무수한 개념들이 물밀듯이 들이닥쳐서 초기에는 사용법에 급급하며 이론보다는 동작을 하는데에만 초점을 맞추다 보니 시간이 흐름에 따라 '내가 정말 개념이 정말 부족하구나'를 느끼고 충격을 받아서 포비(자바지기)가 추천해주신 너무나도 유명한 책 "토비의 스프링3.1" 을 일단은 6장 AOP 까지 파헤쳐 볼 생각이다. 험난한 여정이 되겠지만 더욱 발전할 나를 위해 여행을 떠나보자! "토비의 스프링 3번 정독하면 네이버 가실 수 있어요". - feat. 네이버 입사하신 전 전 기수 '브라이언' # 1.1 초난감 DAO 먼저 사용자 정보를 저장할 User 클래스를 만들어 보자. public class User { String id; String name; St.. 2019. 1. 6.