반응형 분류 전체보기203 [Mybatis] interceptor 를 등록하면 어떠한 원리로 동작하는가 ? ..... Mybatis를 사용하다가 Interceptor를 이용할일이 생겼다. Interceptor를 등록을하고 사용을 하는데는 문제가 없었지만 어떠한 원리로 동작을 저렇게 할 수 있는지 궁금해졌다. 그래서 Mybatis를 뜯어보기로 결심했다. (Mybatis Source : github.com/mybatis/mybatis-3) 순서 1. SqlSessionFactoryBuilder.build 2. XMLConfigBuilder.parse 3. XMLConfigBuilder.parseConfiguration 4. XMLConfigBuilder.pluginElement 5. DefaultSqlSessionFactory.openSessionFromDataSource 6. Configuration.newEx.. 2020. 12. 25. [javascript] drag시 화면밖을 벗어났는지 판단하는 법 drag & drop 을 구현하다가 브라우저 안에서 드래그해서 브라우저 밖에다가 놨을때를 판단할 일이 생겼다. 1번에서 시작해서 2번에다가 놓을 때 지금 하고 있는 모든행동을 취소 해야했다. document.addEventListener('dragend', function(event){ if(isOutOfBrowser(event)){ alert('화면 밖을 벗어날 수 없습니다'); } }) function isOutOfBrowser(event){ return event.clientX window.innerWidth; } dragend 이벤트의 event값에 있는 clinetX값은 브라우저를 왼쪽으로 벗어났으면 0보다 작은값 오른쪽으로 벗어났으면 브라우저창의 크기보.. 2020. 12. 22. [TIP] 오픈소스 컨트리뷰터 되기 오픈소스 컨트리뷰터란 ? 말 그대로 오픈소스에 기여한 사람들을 일컫는 말입니다. 오픈소스 컨트리뷰터가 되는 방법 1. 오픈소스를 본다. -> 소스가 될수도 있고 README 문서가 될수도 있고 번역본이 될수도 있습니다. 2. 이상한점이 있거나 개선사항이 보이면 수정한다. -> 마찬가지로 소스가 될수도 있고 README 문서가 될수도 있고 번역본이 될수도 있습니다. 3. Pull Request 를 날린다. 4. 기다린다. 여러분이 오해하는 점 오픈소스 컨트리뷰터는 오픈소스를 만드는 사람들 = 소스코드를 작성하는 사람들이라고 생각합니다. 하지만 log에 있는 오타수정이나 번역문서에 있는 오타수정도 오픈소스를 만드는 것입니다. 처음에 개발실력이 조금 부족하거나 내가 무슨 컨트리뷰터야.. 라고 시작도 안해보고 .. 2020. 12. 20. [Maven] java: Compilation failed: internal java compiler error Maven으로 처음 프로젝트를 만들고 빌드를 하려고하면 java: Compilation failed: internal java compiler error 이러한 에러가 뜰 것이다. 원인은 Maven 은 처음 프로젝트를 만들게되면 build를 1.5기준으로 맞춘다. 해결방법은 아래 코드를 삽입해주면 된다. org.apache.maven.plugins maven-compiler-plugin 1.8 1.8 UTF-8 2020. 12. 13. [Maven] maven unmappable character for encoding UTF8 maven으로 컴파일을 할때 maven unmappable character for encoding UTF8 이러한 오류가 발생할 수 있다. 검색해 보면 해결 방법은 간단하게 찾을 수 있다. org.apache.maven.plugins maven-compiler-plugin UTF-8 위와 같은 구문으로 encoding을 설정해주면된다. 나같이 maven이 익숙하지 않은 사람들을 위해서 조금 더 자세하게 적으려고 한다. 위의 문구는 build라는 태그 안에 들어가야한다. org.apache.maven.plugins maven-compiler-plugin UTF-8 2020. 12. 12. [Spring] Junit5로 예외테스트 하기 JUnit4 에서는 아래와같은 어노테이션으로 예외를 테스트 했습니다. @Test(expected=DuplicateKeyException.class) JUnit5 에서는 예외 테스트의 방법이 달라집니다. 어노테이션에서 아래와같은 메소드를 사용하는 방식으로 변경 되었습니다. 사용법 첫번째 인자로 기대하는 예외 클래스를 줍니다. 두번째 인자로 실행하려는 로직을 줍니다. 예제 @Test @DisplayName("이미 있는 ID로 회원가입시 실패") public void duplication_check_when_signup() throws Exception{ assertThrows(DuplicateKeyException.class, ()-> { Account account = Account.builder() .u.. 2020. 12. 6. [Spring] PostgreSQL yml 설정 spring boot PostgreSQL yml 설정입니다. spring: datasource: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://url:port/database username: id password: password 2020. 12. 6. [Spring Batch] Scope 'job' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; Spring Batch에서 @JobScope사용시 아래와 같은 에러가 발생할 수 있다. Scope 'job' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; 기존코드는 아래와 같았다. @JobScope를 빼면 문제없이 동작하는 코드가 @JobScope만 달면 빈 생성에서 에러가 발생했다. @Bean(name = "testJob") public Job testJob(JobCompletionNotificationListener jobCompletionNotificationListener){ return jobBuilderF.. 2020. 11. 16. [Junit5] org.junit.platform.commons.JUnitException: @BeforeAll method must be static unless the test class is annotated with @TestInstance(Lifecycle.PER_CLASS). 요즘 TDD에 관심이 있어서 Junit5를 사용해보려고 한다. 테스트코드전에 실행되어야 하는 로직이 있어서 @BeforeAll을 사용하고자 했다. public class TddTest { @BeforeAll public void memberInit(){ System.out.println("Junit BeforeAll"); } @Test public void memberDomainTest() throws Exception{ System.out.println("TestCode 1"); } } 하지만 아래와 같은 오류가 발생했다. org.junit.platform.commons.JUnitException:@BeforeAll method must be static unless the test class is a.. 2020. 11. 9. [ELK] Unable to connect to Elasticsearch. Error: Request Timeout after 30000ms Kibana를 실행할때 Unable to connect to Elasticsearch. Error: Request Timeout after 30000ms 에러가 나면서 실행이 안되는 경우가 있을 것이다. (In case of using Kibana, there may be an error "Cannot connect to Elasticsearch. Error: Request Timeout after 30000ms" and it may not be executed.) 해결방법 (solution) 설치경로/kibana/config 하위에 kibana.yml 파일의 elasticsearch.requestTimeout 의값을 180000으로 늘려준다. (Under Installation path/kibana/c.. 2020. 11. 8. [Junit5] 아직도 @RunWith(SpringRunner.class)를 쓰는가? Junit5가 나온지 어느정도 시간이 흘렀다. 아직도 익숙하다는 이유만으로 Junit4를 사용하는가? "새로 시작하는 프로젝트 혹은 개인프로젝트에서는 Junit5를 사용해보자" 라고 마음 먹었다. 그런데 Test Code를 짜려는순간 @RunWith 가 없어져서 당황했다. 나와같은 개발자들이 있을거라 생각하고 글을적는다. 아래의 @ExtendWith(SpringExtension.class) 는 @RunWith(SpringRunner.class)와 동일하다 2020. 11. 1. [인프라 도전기] ec2 에 배포하기 - 5부(외장톰캣 이용하여 배포하기) gradle 및 소스 설정 변경 war 파일생성 bootwar를 클릭하게 되면 war파일이 생성된다. /opt/톰캣경로/webapps 하위에 해당파일을 옮긴다. tomcat 설정변경 /opt/apache-tomcat-9.0.0.M22/conf/server.xml jar 파일 추가 java 9버전이상부터 아래 jar파일을 추가해야한다. javax.annotation-api-1.3.2.jar javax.xml.soap-api-1.4.0.jar jaxb-api-2.3.1.jar jaxws-api-2.3.1.jar 파일을 /opt/apache-tomcat-9.0.0.M22/lib 경로에 추가 tomcat 실행 cd /opt/apache-tomcat-9.0.0.M22/bin sh startup.sh 2020. 10. 11. 이전 1 ··· 3 4 5 6 7 8 9 ··· 17 다음