spring
-
@Transactional(선언적 트랜잭션) bean Id 지정해서 사용하기웹 개발/Spring Framework 2018. 6. 28. 14:53
스프링에서 일반적으로 선언적 트랜잭션을 사용하기 위해서는 dataSource가 있는 xml 위치에서 123 cs 을 선언해서 사용한다. 하지만, 복수개의 트랜잭션을 사용하기 싶어하는 분들도 있을 것이고, 나처럼 기존 소스를 안 건드리기 위해 특정 부분에서만 트랜잭션을 걸어주고 싶을 수 있다. 에러가 발생해야 내가 무엇을 몰랐는지 알게 되는 것 같다.(에러의 긍정적인 부분이라 생각함) 123 cs dataSource가 있는 xml에서 위와 같이 선언하고 JUnit을 돌려보았더니 위와 같은 에러가 발생했다. 이게 무엇인지 구글링을 해보니 tx:anntation-driven은 default 값으로 transactinManager로 선언된 DataSourceTransactionManager를 찾는 것을 알았다...
-
JUnit에서 Controller 테스트 코드 작성하기(정리)웹 개발/Spring Framework 2018. 6. 18. 13:46
많은 부분을 참조한 출처: http://thswave.github.io/java/2015/03/02/spring-mvc-test.html 맨 먼저 환경설정. JUnit을 위한 기본적인 환경설정이 돼있다는 전제 하에 Mock 디펜던시가 필요하다. 아래 소스를 추가. 123456 org.mockito mockito-all 1.10.19 testcs 컨트롤러 테스트는 서비스와 잘 연결됐는지 확인만 해주면 되기 때문에 데이터를 받아오는 것까진 굳이 확인해줄 필요없다.(하는 부분까지 데이터를 받는 게 되지도 않았지만..) 비즈니스 로직은 Service와 DAO에서 확인하면 될 것이다. 먼저, 전체소스부터 보여주고 차례로 정리해보겠다. 12345678910111213141516171819202122232425262..
-
Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, at org.apache.log4j.Log4jLoggerFactory.<clinit>웹 개발/에러 해결 2018. 6. 7. 09:45
java.lang.ExceptionInInitializerError 이런 에러가 나면서 jar파일이 충돌되는 것 같았다. 충돌되니까 하나 삭제하면 된다 라는 분도 있었는데, 다른 방법도 있을까 싶어서 스택오버플로우를 뒤져봤더니 다른 해결법을 찾았다. 123456 log4j log4j 1.2.17 Colored by Color Scriptercs pom.xml에서 위의 dependency를 주석처리해주고(혹은 exclusion) maven update 후 실행해보니 해결!
-
[Spring] log4j 설정하기(공유)웹 개발/Spring Framework 2018. 5. 8. 16:22
몇년 전 글이지만, 보기쉽게 설명돼있어서 공유~!(영어로 돼있지만, 코드나 소스를 보면 몰라도 할 수 있을 것 같아요) log4j를 스프링에서 설정하는데 이 포스팅에서 도움을 많이 받았슴다 사이트는 이쪽으로 :) JUnit에 필요한 디펜던시들.(버전: 2018-07-05 기준) 1234567891011121314151617181920212223242526272829303132333435 junit junit 4.8.1 org.slf4j slf4j-log4j12 1.7.7 org.slf4j slf4j-api 1.7.7 org.slf4j jcl-over-slf4j 1.7.7 org.lazyluke log4jdbc-remix 0.2.7 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-..
-
[iBatis+Spring+mariaDB] AUTO_INCREMENT의 초기화와 transaction에 관하여DataBase/MariaDB & MySQL 2018. 5. 3. 09:42
회사에서 iBatis를 사용하는 부분이 아직 남아있다.(대부분 MyBatis로 전환했지만.) iBatis부분에서 기능을 활용해 sequence를 만들어내고 있었다. 이 부분은 auto_increment로서 숫자가 자동으로 올라가고 있었다. 난 지금 JUnit test를 하는 중이기 때문에 클래스 부분에서 @Transactional을 적용하고 있었다. 몰랐던 사실이지만, auto_increment는 transaction이 적용되지 않는다는 것이었다. 그 뜻은 auto_increment는 rollback이 적용되지 않는다는 것. JUnit test를 할 때 이런 경우가 있다면, 테스트를 한 번 해보고 @Ignore처리를 하면 좋을 것 같다. auto_increment를 돌릴 수 있는 방법이 있다면, 직접 s..
-
[Spring] log4j2.xml 설정 정리(apache 로그 포함)웹 개발/Spring Framework 2018. 4. 26. 15:57
log4j2를 입맛에 맞게 사용하고 싶어서 정리해두기. - jdbc.sqlonly : SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. - jdbc.sqltiming : SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. - jdbc.audit : ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다. - jdbc.resultset : ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다. 예) log4j...
-
[Spring] JUnit 테스트 단위별(메서드별)로 1개씩 수행하는 방법웹 개발/Spring Framework 2018. 4. 25. 17:03
위처럼 JUnit 테스트를 하면서 한 JUnit 클래스 안에 메서드가 많을 경우, 그때 그때 하나의 단위 테스트만 테스트 해보고 싶을 것이다. 이때 할 수 있는 방법은 총 2가지가 있다. 첫째는 메서드 이름에 블록을 만든 후, 오른쪽 마우스를 클릭. 그리고 Run As>JUnit Test를 실행하는 것이다. 단축키로 Alt+Shift+X, T이다. 이는 동시에 Alt,Shift,X를 누르고 손을 뗀 다음, T를 눌리면 된다.( ',' 쉼표 표시는 한 템포 쉬라는 뜻인가보다.) 두번째 방법은 소스창 아래에 JUnit 탭에서 테스트를 원하는 메서드에 마우스를 대고, 오른쪽 마우스 버튼을 클릭하고 Run을 실행한다. 이렇게 하면 하고 싶은 테스트를 하나씩만 수행할 수 있어 한 클래스의 모든 test 케이스가 ..
-
[Spring] JUnit으로 테스트 코드 작성하기웹 개발/Spring Framework 2018. 4. 13. 11:49
JUnit으로 기존 패키지에 대해 테스트 코드를 만들고 있다. 기존 패키지에서는 테스트 케이스를 만들지 않고 개발했다고 하는데, 이번에 오라클 버전 개발 계획이 잡히면서 기존 소스의 테스트 케이스를 만들고 있다.(순서가 바뀐 듯 하지만..) DAO에 대해 어떤 방법으로 테스트하는지 간단하게 정리해보려 한다. DAO가 제대로 파라미터에 맞춰 동작하는지 테스트 하는 거라 복잡하게 코드를 짤 필요까지 없을 것 같다. 메서드의 파라미터는 하드코딩으로 직접 넣어주고 JUnit을 돌려주면 된다. 간단하게 테스트 코드 작성. 난 클래스 단위에서 @Transactional을 선언했기 때문에 메서드 하나하나에 선언해줄 필요 없이 자동으로 rollback 된다. * @Test 선언하는 것 꼭 잊지 말자. 123456789..