스프링

    [스프링] Spring messages.properties 한글 인코딩

    [스프링] Spring messages.properties 한글 인코딩

    김영한님 강의를 수강하던 중, messages.properties에 한글을 입력하면 ??로 출력되는 문제가 발생했다. https://www.inflearn.com/questions/277955/%ED%95%9C%EA%B8%80-%EC%9D%B8%EC%BD%94%EB%94%A9-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4 한글 인코딩 관련 질문입니다. - 인프런 | 질문 & 답변 ms.getMessage('hello', null, null)을 넣고 테스트를 돌렸을 때 아래와 같이 뜨면서 테스트가 실패합니다. Expecting: to be equal to: but was not. org.opentest4... www.inflearn.co..

    [Spring] 스프링 요청 파라미터 - Reqeust Param (required, defaultValue)

    Spring request param @ResponseBody public String requestParamRequired(@RequestParam(required = true) String username, @RequestParam(required = false) Integer age) { log.info("username={}, age={}", username, age); return "ok"; } http://localhost:8080/request-param-required?username=hello → age가 없을 때 파라미터를 int age로 하면 500 에러 → int 형은 primitive type이어서 null값을 가질 수 없음 Integer로 바꿔주면 age는 null이 됨 (아니면..

    [Spring] 로깅 logging

    로깅 로깅 라이브러리 스프링부트 라이브러리를 사용하면 스프링 부트 라이브러리가 함께 포함 (spring-boot-starter-logging) SLF4J: 인터페이스, 구현체-Logback (스프링 부트가 기본으로 제공) 로그 선언 log.trace("trace log={}", name); log.debug("debug log={}", name); log.info("info log={}", name); log.warn("warn log={}", name); log.error("error log={}", name); trace → error로 갈수록 포함 범위가 작아짐 trace: 하위 모든 레벨 포함 error: error만 로그로 출력 log.trace("trace log={}", name); log...

    [Spring] 스프링 MyBatis 연동

    MyBatis 1. pom.xml에 의존성 추가 org.apache.commons commons-dbcp2 2.8.0 mysql mysql-connector-java 8.0.22 org.mybatis mybatis 3.5.6 org.mybatis mybatis-spring 2.0.6 org.springframework spring-jdbc ${org.springframework-version} 2. applicationContext.xml dataSource 빈 등록 driverClassName, url, username, password sqlSessionFactory 등록 dataSource 연결 mapperLocations - mapper.xml의 경로 지정 typeAliasesPackage - d..

    [Spring] 스프링 - File Upload, Download

    파일 업로드 / 다운로드 1. pom.xml에 commons-fileupload 추가 commons-fileupload commons-fileupload 1.4 2. servlet-context에 multipartResolver 추가 defaultEncoding = 인코딩 방식 maxUploadSize= 최대 업로드 크기, -1인 경우 무한 3. form 수정 ... method: POST, enctype=”multipart/form-data”로 설정 이미지 파일만 받고싶은 경우 accept="image/*" 4. ProductController @PostMapping("/product/regist") public String regist(Model model, @RequestPart(required =..

    [Spring] 스프링 인터셉터 - Handler Interceptor

    HandlerInterceptor를 통한 요청 가로채기 Controller가 요청을 처리하기 전/후 처리 실제 Business Logic과 분리되어 처리해야 하는 기능을 넣고 싶을 때 유용하다 @Component public class SessionInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(); // 세션에 로그인 정보가 있다면 그대로 진행 if (session.getAt..

    [Spring] 스프링 핵심 원리 기본편 9. 빈 스코프

    9. 빈 스코프 빈 스코프란? 스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어 스프링 컨테이너가 종료될 때까지 유지 스프링 빈이 싱글톤 스코프로 생성되기 때문 스프링은 다음과 같은 스코프 지원 “싱글톤”: 기본 스코프, 스크링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 “프로토타입”: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 “웹 관련 스코프” request: 웹 요청이 들어오고 나갈 때 유지되는 Q스코프 session: 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 프로토타입 스코프 싱글톤 스코프와 달리 스프링 컨테이너에 조회하면 ..

    [스프링 부트] 파일 업로드 시 static 정적 경로 설정

    파일 업로드를 할 때 저장하고 싶은 위치는 src\main\static\resources\upload 인데 자꾸 src\main\webapp\static\resources\upload 에 저장되는 문제가 있었다. 해결은 아직 하지 못했다.. http://localhost:8080/resources/upload/test.png 라고 주소창에 검색하면 static\resources\upload에 있는 파일이 잘 뜨는데 업로드할 때 주소 설정이 잘못된 것인지 파일 업로드만 하면 webapp으로 간다 뭔가 설정이 잘못된 것 같은데 아직 해결 방안을 찾지 못함 @PostMapping("/regist") public String doRegist(@ModelAttribute User user, @RequestPart..

    [Spring] 스프링 핵심 원리 기본편 - 8. 빈 생명주기 콜백

    8. 빈 생명주기 콜백 빈 생명주기 콜백 스프링은 간단하게 다음과 같은 라이프사이클을 가진다 객체 생성 → 의존관계 주입 (생성자 주입은 예외) 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 함 - 개발자는 의존관계 주입이 완료된 시점을 어떻게 알 수 있을까?? 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다 스프링 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료 초기화 콜백: 빈이 생성되고 빈의 의존관계 주입이 완료된 후 호출 소멸전 콜백: 빈이 소멸되기 직전에 호출 ..

    [Spring] 스프링 핵심 원리 기본편 - 7. 의존관계 자동 주입

    7. 의존관계 자동 주입 다양한 의존관계 주입 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 특징 생성자 호출 시점에 딱 1번만 호출되는 것이 보장됨 불변, 필수 의존관계에 사용 불변: 생성자 외에 외부에서 의존관계를 수정할 수 없음 필수: final, 꼭 값이 있어야 함 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동으로 지정됨 생성자 주입은 빈을 등록하면서 의존관계 주입도 같이 일어남 - 생성자를 호출하게 되기 때문에 수정자 주입 setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해 주입 특징 선택, 변경 가능성이 있는 의존관계에 사용 참고: @Autowired(required = false) → 주입할 대상이 없어도 동작하게 할 ..

출처: https://gmnam.tistory.com/157 [Voyager:티스토리]