본문 바로가기

스프링41

스프링 프로젝트 실행시 열리는 기본주소창 설정 스프링 시작 (톰캣 실행) 시 위 주소창이 기본 url로 열리게 된다. 2024. 3. 14.
Spring Security 간단 적용 애플리케이션을 만들기 위해서는 보통 인증/인가 등의 보안이 필요합니다. 스프링 시큐리티는 스프링 기반의 애플리케이션을 위한 보안 솔루션을 제공합니다. 인증 웹에서 인증이란 해당 리소스에 대해서 작업을 수행할 수 있는 주체인지 확인하는 것 예를들어 커뮤니티 사이트에서 게시판의 글을 보는 것은 로그인을 하지않아도 되지만, 댓글을 작성하려면 로그인을 해야하기때문에 인증이라는 절차가 필요하다. 인가 인증 과정 이후에 일어나는 일로 커뮤니티를 관리하는 관리자 페이지에는 관리자만 접근할 수 있고 일반 사용자의 접근을 막아야한다. 이때 접근하는 사용자가 관리자 페이지 URL에 대해서 인가된 회원인지를 검사하는 것이다. maven으로 security dependency를 추가하였다. org.springframework.. 2022. 8. 1.
자바 예외 이해 Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 애플리케이션 개발자는 이 예외를 잡으려고 해서는 안된다. 상위 예외를 catch 로 잡으면 그 하위 예외까지 함께 잡는다. 애플리케이션 로직에서는 Throwable 예외도 잡으면 안되는데, 앞서 이야기한 Error 예외도 함께 잡을 수 있기 때문에다. 애플리케이션 로직은 이런 이유로 Exception 부터 필요한 예외로 생각하고 잡으면 된다. Exception : 체크 예외 애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다. Exception 과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. 단 RuntimeException 은 예외로 한다 RuntimeException : 언.. 2022. 7. 28.
스프링 데이터 JPA 소개 그동안 JPA CRUD를 직접 작성하였다. 그런데 스프링 데이터 JPA를 이용하면 가장 기본적인 CRUD - save, delete, find, findAll, count 등 (그 이외에도 정말 많은) 다양한 기능들이 구현되있는 인터페이스를 상속받아 사용할 수 있다. 직접 사용해보았는데 신세계다. @Repository public class MemberJpaRepository { @PersistenceContext private EntityManager em; public Member save(Member member) { em.persist(member); return member; } public void delete(Member member) { em.remove(member); } public M.. 2022. 7. 15.
파일 업로드 파일을 업로드 하려면 파일은 문자가 아니라 바이너리 데이터를 전송해야 한다. 문자를 전송하는 이 방식으로 파일을 전송하기는 어렵다. 이 문제를 해결하기 위해 HTTP는 multipart/form-data 라는 전송 방식을 제공한다. 첫 예제에서는 서블릿을 이용한 파일 업로드를 구현함. application.properties logging.level.org.apache.coyote.http11=debug 이 옵션을 사용하면 HTTP 요청 메시지를 확인할 수 있다. 멀티파트 사용 옵션 spring.servlet.multipart.max-file-size=1MB : 파일의 최대 용량 제한 가능 spring.servlet.mulitpart.enabled=true (기본) : false로 설정하면 멀티파트 데이.. 2022. 6. 26.
스프링 타입 컨버터 애플리케이션을 개발하다 보면 문자를 숫자로 변환하거나, 반대로 숫자를 문자로 변환해야 하는 것처럼 타입을 변환해야 하는 경우가 상당히 많다. TypeConverter 이때 타입 컨버터를 이용하여 타입을 바꿀 수 있다. @Slf4j public class IntegerToStringConverter implements Converter { @Override public String convert(Integer source) { log.info("convert source = {}", source); return String.valueOf(source); } } 하지만, 이렇게 타입 컨버터를 하나하나 직접 사용하면, 개발자가 직접 컨버팅 하는 것과 큰 차이가 없다. ConversionService 이렇게 타.. 2022. 6. 25.