일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 한국투자증권 해외주식 양도세
- 홈택스 해외주식 양도세
- katalon 자동화
- 주식 양도세 신고방법
- 재귀 예제
- recursion example
- 최대공약수 예제
- 테스트 자동화
- bfs 미로탐색 java
- 해외증권 양도세 한국투자증권
- katalon 사용법
- 피보나치함수 예제
- CSTS 폭포수 모델
- 해외주식 양도세 신고
- katalon
- tomcat log
- javascript 자동완성
- 톰캣 실시간 로그
- Katalon Recorder 사용법
- oracle group by
- 국세청 해외주식 양도세 신고방식
- java.sql.SQLSyntaxErrorException
- 한국투자증권 양도세 신고
- js 자동완성
- git 연동
- 재귀함수 예제
- 피보나치함수
- katalon 비교
- katalon xpath
- 피보나치 예제
- Today
- Total
목록java (97)
엄지월드
@TestConfiguration을 통해서 직접 Bean을 주입해 줄 수 있다. @Autowired private MemberRepositoryV3 memberRepository; @Autowired private MemberServiceV3_3 memberService; @TestConfiguration static class TestConfig { @Bean DataSource dataSource9) { return new DriverManagerDataSource(URL, USERNAME, PASSWORD); } @Bean PlatformTransactionManager transactionManager() { return new DataSourceTransactionManager(dataSourc..

프록시를 사용하면 트랜잭션을 처리하는 객체와 비즈니스 로직을 처리하는 서비스 객체를 명확하게 분리할 수 있다. 트랜잭션 프록시 코드는 아래와 같이 되어 있다. @Transaction이 적용되어 있는 서비스를 호출하게 되면 EnhancerBySpringCGLIB 이런식으로 클래스 이름이 변경되게 되는데, @Transactional 을 선언하게 되면 스프링에서 약간의 조작을 통해 해당 Service를 상속 받게 된다.나머지는 스프링 트랜잭션 AOP가 자동으로 처리해준다. CGLIB 라이브러리를 통해서 프록시를 만들어낸 것이다. AOP인지 테스트는 AopUtils.isAopProxy()를 통해서 진행할 수 있다.

스프링이 TransactionTemplate이라는 편리한 기능을 제공스프링은 `TransactionTemplate`라는 템플릿 클래스를 제공한다. 트랜잭션을 없애기 전 코드 트랜잭션을 없앤 코드.PlatformTransactionManager에 new TransactionTemplate(transactionManager)를 주입한다. (this.txTemplate은 TransactionTemplate txTemplate 이다) 한번 더 없앨 수 없는 이유는 bizLogic() 메서드를 호출하면 SQLException 체크 예외를 넘겨준다. 해당 람다에서 체크 예외를 밖으로 던질 수 없기 때문에 언체크 예외로 바꾸어 던지도록 예외를 전환했다. - 체크 예외(Checked Exception) : 컴파일러가..

프레젠테이션 계층 UI와 관련된 처리 담당 웹 요청과 응답 사용자 요청을 검증 주 사용 기술 : 서블릿과 HTTP 같은 웹 기술, 스프링 MVC 서비스 계층 비즈니스 로직을 담당 주 사용 기술 : 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성 데이터 접근 계층 실제 데이터베이스에 접근하는 코드 주 사용 기술 : JDBC, JPA, File, Redis, Mongo ... 순수한 서비스 계층 여기서 가장 중요한 곳은 어디일까? 바로 핵심 비즈니스 로직이 들어있는 서비스 계층이다. 시간이 흘러서 UI(웹)와 관련된 부분이 변하고, 데이터 저장 기술을 다른 기술로 변경해도, 비즈니스 로직은 최대한 변경없이 유지되어야 한다. 이렇게 하려면 서비스 계층을 특정 기술에 종속적이지 않게 개발해야 한다. ..
배경 : css를 업데이트했는데, 캐시 때문에 사용자들에게 이전 css가 보여지면서 화면이 깨지는 현상이 있었다. 그래서 방법을 찾아보니 캐시 때문에 css 파일이 갱신이 안되는 경우, 파라미터를 주게 되면 새로운 파일로 인식하게 되어 새롭게 로딩을 받을 수 있다는 사실을 찾아냈다. 방법은 파일의 수정된 시간에 대한 정보를 읽어와서 파라미터로 주도록 설정하는 코드를 찾아서 적용하였다. ... 아래와 같이 깔끔하게 뺄 수 있다. ...

아래와 같이 에러가 났다. Failed to introspect annotated methods on class org.springframework.boot.web.servlet.support.SpringBootServletInitializer org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.dodrambio.web.WebApplication]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot..
intellij community(커뮤니티) 버전은 hotswap을 제공하지 않는다. ultimate 버전은 우측 상단에 Run/Debug Configuration → Modify options → On 'Update' action : Hot swap classes and update trigger file if failed 선택을 설정해주면 되지만, community 버전은 없다. 그래서 java 코드가 변경되어도 class 파일이 재빌드가 되지 않아서 톰캣 재시작을 해줘야 하는 상황이었다. 디버깅에 매우 불편하였지만, 그렇다고 해서 Eclipse를 쓰긴 싫었다. 그래서 방법을 찾아보았더니, Build > Recompile (CTRL + SHIFT + F9)을 사용하면 알게되었다! 원리는 말 그대로 c..
java.sql.SQLSyntaxErrorException: ORA-00900: SQL 문이 부적합합니다 mybatis의 xml에서 에러가 발생하는 현상이 있었다. 그래서 쿼리를 확인해보니, 쿼리는 잘 작동하고 있었다... 그래서 한참 고민하던도중, 아래와 같이 잘못 입력되어 있는 것을 확인하였다. 정말 찾기 힘들었다. > 그래서 >을 빼고 올바르게 아래와 같이 수정해주었다. ; 세미클론이 있어도 해당 현상이 발생한다고 한다.

*************************** APPLICATION FAILED TO START *************************** Description: Failed ExcelService in ExcelService required a bean of type 'com.skeleton.excel.service.ExcelService' that could not be found. Action: Consider defining a bean of type 'com.skeleton.excel.service.ExcelService' in your configuration springboot에서 bean 생성이 com.skeleton.board 부분만 되고, com.skeleton.excel 부..
import java.util.List; import java.util.Map; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.stream.Collectors; @Getter @Setter class Board { private Long bno; private String title; private String content; private String writer_id; private String writer_name; } public Object getStream() { List boardList = new ArrayList(); for (int i = 0; i < 3; i++) { Board board = new Board..