Programming/Spring 25

[SpringBoot] application.properties 에서 jdbc 설정시 주의사항 - Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via..

jdbc 정보를 입력할 때 데이터베이스의 username 혹은 password를 암호화할 일이 생긴다. 다음은 암호화된 정보를 jdbc에 입력할 때 주의사항을 기재한 것이다. 일반적인 jdbc 설정 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&allowPublicKeyRetrieval=true spring.datasource.username=test spring.datasource.password=test Bean 메소드를 사용하여 암호화된 데이터를 입력할 시 에러발생 예시) spring.datasource.d..

Programming/Spring 2021.11.23

[Spring] jUnit Test 실행시 Could not detect default configuration classes for test class 오류

jUnit 으로 단위테스트를 하려는데 이런 에러가 발생했다... 이 에러는 @SpringBootApplication 과 @SpringBootTest 의 클래스 명이 일치하지 않아서 발생되는 에러이다. 이런 경우엔 SpringBootApplication을 따로 만들어주어도 되지만, 테스트가 많아질수록 손이 많이가는 불편함이 발생한다.. 그 해결법으로 @ContextConfiguration 어노테이션을 설정해주면 main Spring Application을 설정해줄 수 있다. [참고 링크] https://velog.io/@gillog/VSCode-jUnit-Test-%EC%8B%A4%ED%96%89-%EC%95%88%EB%90%A0-%EB%95%8C-Could-not-detect-default-configu..

Programming/Spring 2021.11.23

[Spring] SpringBoot WebClient buffer size 설정

API Rest 테스트를 하던 도중 특정 주소로부터 데이터를 가져오다가 이런 에러가 발생하였다. 대충 읽어보니 limit buffer 값이 초과해서 발생한 에러인데. Spring core 5.3.12 기준으로 buffer의 기준 크기는 256KB 이다. 따라서 buffer size만 변경해주면 문제는 해결된다. 방법1) application.properties 에 해당값을 추가해준다. (임의로 10MB만 할당) spring.codec.max-in-memory-size=10MB 방법2) ExchangeStrategies 인터페이스 사용 .. ExchangeStrategies exchangeStrategies = ExchangeStrategies.builder() .codecs(configurer -> co..

Programming/Spring 2021.11.18

[Spring] LoggerFactory is not a Logback LoggerContext but Logback is on the classpath 에러

Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/users/apache-tomcat-8.5.72/webapps/Board-0.0.1-SNAPSHOT/WEB-INF/lib/slf4j-log4j12-1.7.5.jar) SpringBoot의 경우 내부에 이미 logback에 대한 의존성이 있기 때문에 생기는 충돌 해결 slf4j-log4j..

Programming/Spring 2021.11.08

[Spring] RequestMapping value값 여러개 사용.

여러 링크 혹은 반복적인 page를 하나의 컨트롤러로 처리하고 싶을 때는 다음과 같이 사용할 수 있다. 1. URL 분기 @RequestMapping(value={"/","/login"}, method=RequestMethod.GET) public String index(HttpServletRequest request, HttpServletResponse response ) { return "/login"; } 2. PathVariable 사용 @RequestMapping(value="/page/{index}.do", method=RequestMethod.GET) public String page(@PathVariable int index, HttpServletRequest request, HttpSer..

Programming/Spring 2021.11.01

[Spring] log4j vs slf4j

log4j log4j는 3개의 Components들로 이루어져있다. logger : 데이터 기록. appender : 데이터가 어디에 기록되는지 설정. layout : 데이터 스타일 설정. 장점 thread safe 퍼포먼스 최적화 여러 종류의 appender 지원 jul에 비해 명확한 기준의 레벨을 가지고 있다. (ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL) private static Logger logger = LogManager.getLogger(ViewController.class); logger.info("내용"); logger.warn("내용"); logger.debug("내용"); logger.error("내용"); slf4j slf4j는 logging 관..

Programming/Spring 2021.10.29

[Spring] application.properties 우선순위

유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties 테스트에 있는 @TestPropertySource @SpringBootTest 애노테이션의 properties 애트리뷰트 커맨드 라인 아규먼트 SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티 ServletConfig 파라미터 ServletContext 파라미터 java:comp/env JNDI 애트리뷰트 System.getProperties() 자바 시스템 프로퍼티 OS 환경 변수 RandomValuePropertySource JAR 밖에 있는 특정 프로파일용 application properties JAR 안에 있는 특정 프로파일용 application propertie..

Programming/Spring 2021.10.29

[Spring] <form:form> 태그 사용법

Spring에서 지원하는 form 태그 라이브러리가 있다. 이것을 사용하면 데이터를 바인딩하거나 에러메세지를 간편하게 할 수 있다. 먼저 jsp파일 상단에 아래와 같이 taglib를 추가해준다. 그 후 예문과 같이 작성해준다. 이름 : 나이 : 성별 : 남성 여성 분석 기본 form 태그와는 달리 modelAttribute라는 attr가 추가된걸 볼 수 있는데, @RequestMapping(value="/enrollment", method=RequestMethod.POST) public String enrollment(@ModelAttribute("userInfo")UserVO userVO, Model model ) { System.out.println("@enrollment"); try { model...

Programming/Spring 2021.10.28

[Spring] Controller 파라미터 종류 및 차이 - Model/ModelMap

공통점 둘 다 addAttribute("변수"); 를 사용함. Model or ModelMap에 데이터만 저장 후 View에 전달하기 위해 사용된다. 차이점 Model은 인터페이스이고, ModelMap은 클래스이다. 사용하는 건 크게 차이가 없고 프로그래머가 어떤 타입의 객체를 선호하느냐에 따라서 사용하면 된다. @ModelAttribute @RequestMapping(value="/home", method=RequestMethod.POST) public String home(HttpServletRequest request, Model model ) { String name = request.getParameter("name"); String age = request.getParameter("age");..

Programming/Spring 2021.10.28