전체 글
[ 스프링부트 / SpringBoot] Exception 처리
첫번째 방식, Global(전역)처리 방식 1. Global(전역)처리 방식 - @RestControllerAdvice (rest), @ControllerAdvice (view) - 화면을 리턴하지 않고 Rest방식으로 사용할 경우 @RestControllerAdvice, 화면(jsp, html)을 리턴하는 @ControllerAdvice를 사용하면 된다. - basePackages 속성을 지정하면, 해당 패키지 내에서만 Exception 처리가 가능하다. - basePackageClasses 속성을 지정하면, 해당 클래스 내에서만 Exception 처리가 가능하다. - @ExceptionHandler에 value를 통해 어떤 Exception을 처리할 것인지 지정할 수 있다. @RestControlle..
[ 백준 2588번 ] 곱셈
https://www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 자연수 2개를 입력받아서 자리수를 표시하고 마지막에 최종 결과값을 출력하는 문제 import java.util.*; public class Multiple { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a, b; a = scanner.nextInt(); b = scanner.nextInt(); char[] charArray = String.valueOf(b).toCharArray(); for..
[ Spring / 스프링 ] 프로퍼티(.properties) 읽는 방법
토비의 스프링을 보다가 다음에 원리를 설명해 줄 때 필요할 것 같아, 글을 적어 정리를 한다. 스프링에선 설정을 할때 대표적인 파일형태로 properties파일과 최근엔 yaml파일을 사용한다. properties파일은 .properties파일로 키=값으로 설정 후 꺼내서 쓰면 된다. db.driverClass=com.mysql.jdbc.Driver db.url=jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC db.username=root db.password=root 정의한 properties파일은 @PropertySource 어노테이션을 이용하여 사용할 수 있다. @PropertySource("/properties/database.properties")..
[ Spring / 스프링 ] 컨테이너 빈 등록 정보 확인
스프링 컨테이너는 모두 BeanFactory라는 인터페이스를 구현하고 있다. BeanFactory의 구현 클래스 중에 DefaultListableBeanFactory이 존재한다. DefaultListableBeanFactory는 거의 대부분의 스프링 컨테이너는 이 클래스를 이용해 빈의 등록하고 관리하고 있다. 스프링에서는 DefaultListableBeanFactory 오브젝트를 @Autowired로 주입받아서 이용하게 해준다. 이 객체에서 getBeanDefinitionNames() 메소드가 있어 등록된 모든 빈 이름을 가져올 수 있다. 빈 이름을 이용해서 실제 빈과 빈 클래스 정보 등도 조회할 수 있다. @ExtendWith(SpringExtension.class) public class BeanTe..
[토비의 스프링 - Vol.1]7.6.2 빈 스캐닝과 자동와이어링 실습 중 에러 java.lang.IllegalStateException: Failed to load ApplicationContext
[ p.676 ] xml로 설정했던 부분을 자바로 변경을 한 후 TestApplicationContext.java에서 설정한 것을 리팩토링 하는 작업 중에 에러가 발생했다. @Configuration @EnableTransactionManagement public class TestApplicationContext { .... @Bean public UserDao userDao(){ return new UserDaoJdbc(); } .... } 위에 코드로 실행할 때는 테스트 코드가 정상적으로 작동했다. 하지만 아래처럼 코드를 변경하니 에러가 발생... @Configuration @EnableTransactionManagement @ComponentScan(basePackages = "user") pub..
[스프링 부트 / SpringBoot] Intellij Community 버전 프로젝트 세팅
스프링 부트에 관련된 강의들을 보면 Intellij를 많이 사용한다. 그래서 Intellij를 사용해서 프로젝트를 세팅하는 방법에 대해 기록했다. Ultimate버전을 사용하면, Spring Initializr를 통해 간단히 만들 수 있다.. (역시 돈을 내면 많은 기능을 제공 받는다...) 무료버전인 Community 버전을 사용하면 Spring Initializr을 사용할 수 없기 때문에 아래의 사이트로 접근하여 프로젝트를 세팅한다. 사이트에 접근해서 해야한다는게 불편할 뿐 세팅하는건 매우 간단한 것 같다. 1. 스프링부트 세팅주소: https://start.spring.io/ 에 접속한다. 2. 빌드, 언어, 프로젝트 정보, jdk버전, 등 많은 것들을 세팅한다. -> RestApi 서버를 구성한다..
[ Spring / 스프링 ] Annotation(어노테이션) 공부 - 4 [ Validation ]
@Size : 문자 길이 측정 @NotNull : null 불가 @NotEmpty : null, "" 불가 @NotBlank : null, "", " " 불가 @Past : 과거 날짜 @PastOrPresent : 오늘이거나 과거 날짜 @Future : 미래 날짜 @FutureOrPresent : 오늘이거나 미래 날짜 @Pattern : 정규식 적용 @Max : 최대값 @Min : 최소값 @AssertTrue / False : 별도 Logic 적용 @Valid : 해당 object validation 실행
[ Spring / 스프링 ] Annotation(어노테이션) 공부 - 3 [ junit ]
@Runwith (junit4에서 사용) @RunWith는 jUnit 프레임워크의 테스트 실행방법을 확장할 때 사용하는 어노테이션이다. @RunWith(SpringJUnit4ClassRunner.class) class UserDaoTest { ..... @ExtendWith (junit5에서 사용) @ExtendWith를 사용해야 하지만, 이미 스프링 부트가 제공하는 모든 테스트용 애노테이션에 메타 애노테이션으로 적용되어 있기 때문에 @ExtendWith(SpringExtension.class)를 생략할 수 있다. @ExtendWith(SpringExtension.class) class UserDaoTest { ..... @ContextConfiguration -> 테스트코드에서 테스트용 DI 정보를 어..