2023년 9월 15일 금요일

스프링 빈 등록 순서 오류 시 @PostConstruct 사용

 

스프링 xml 설정에서

등록할 빈을 명시적으로 지정한 것과 <context:component-scan>와 혼용해서 사용한

 경우 빈등록 순서 오류가 발생 할 수도 있습니다.


여러가지 방법이 있지만, 그 중에서 @PostConstruct 를 사용해봅니다.

@PostConstruct가 호출되는 시점은 스프링 빈의 생성과 주입이 완료된 후입니다.

따라서 다른빈에 대한 의존성을 가지고 있다면, 해당 빈들이 모두 주입된 후에

 @PostConstruct가 호출되기 때문에, 객체가 존재하지 않는다는 오류를 예방할 수 있

습니다.


@PostConstruct

public void init() {

}


Connection Pool에 있는 Connection의 autocommit=false설정 후 반환할 때

ChatGPT를 사용해서 얻은 결론을 요약하였습니다.

트랜잭션 처리를 하기 위해 connection의 autocommit=false를 해야 할 때가 있습니다.

Connection Pool에 있는 connection의 autocommit 상태는 해당 connection을 가져올 때 설정 된 상태를 유지합니다. 즉 Connection Pool에서 connection을 가져올 때 connection의 autocommit 상태를 설정하고, 그 상태를 유지합니다.

그래서 connection을 반환하기 전에 다시 원래 상태로 복원하지 않으면, 해당 connection을 재사용하는 다른 부분에서 예기치 않은 동작이 발생할 수 있습니다.

autocommit 설정을 원래 상태로 복원해야 하는 시점은 'connection.close()' 메서드를 호출하기 전에 해야합니다. autocommit 설정을 'connection.close()' 메서드 호출 이후에 변경하면 해당 커넥션은 이미 닫혔으므로 설정을 변경할 수 없습니다.

다시말해 connection을 사용한 후 데이터베이스 작업을 완료하고 'connection.close()'를 호출하기 전에 autocommit 설정을 원래 상태로 복원해야 합니다. 이렇게 하면 connection을 닫을 때 설정이 제대로 복원되어 다음 사용자에게 영향을 미치지 않게 됩니다.

connection.setAutoCommit(false);

//데이터베이스 작업
//...

connection.commit();
connection.setAutoCommit(true);
connection.close();

2023년 9월 1일 금요일

챗GPT가 만들어준 예금이자 계산기입니다.

예금이자 계산기

계산 결과가 여기에 나타납니다.

2021년 1월 25일 월요일

할인! 듀오백 의자. 가성비의자. DK-2500G

몇년전에 구매했던 DK-2500G

듀오백의자를 추가로 구매하려고 알아보니..

듀오백 공식 온라인스토에에서 이런 이벤트를 했었네요.




이미 이벤트 기간이 지나버린...

그래서 쿠팡에서 가격이 얼마나하는지 검색해보았습니다.



제가 찾던 DK-2500G가 할인을 많이하네요,

이정도 가격이면 10년전이랑

별로 차이가 나지 않는것같습니다.

다른 듀오백 의자들도 한번 구경해보세요~

<파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음>



2021년 1월 12일 화요일

개발용 팬타그래프 키보드 추천


개발용으로 키보드 강력 추천합니다.

여러가지 키보드를 많이 써봤지만

가격도 저렴하고 가장 만족했던 키보드!



팬타그래프 키보드(노트북과 키감이 비슷)이고,

가격은 2만원대네요~

제가 개발하면서 가장 오래 썼었던 키보드. 재구매합니다ㄱㄱ


아이락스 퍼펙트 슬림 아이솔레이션 유선키보드, IRK01W, 실버

<파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음>

감사합니다.

2019년 6월 5일 수요일

[Spring Boot] jsp port 초기 세팅

Spring Boot를 공부하면서 정리해봅니다.

우선 STS(Spring Tool Suite) 를 다운로드 받습니다.
https://spring.io/
사이트 맨 아래에 보면 TOOLS 클릭하면 다운 받을 수 있습니다.

Spring Boot는 기본적으로 Spring을 어느정도 알고있어야 하네요..

시작
Spring Starter Project로 프로젝트 생성

Hello를 찍기위해 컨트롤러를 만들어봅니다.
 @ResponseBody
 @RequestMapping(value="/hello")
 public String hello() {
  return "Hello~ Spring Boot!";
 }

서버시작
프로젝트 우클릭 -> Run As -> Spring Boot App
또는 프로젝트Application.java 파일에서 우클릭 -> Run As -> Spring Boot App

localhost:8080/hello
이렇게 Hello~ Spring Boot! 함 찍어보고.


jsp를 사용하기 위한 설정을 한다.

src/main 아래에
webapp/WEB-INF/jsp 를 직접 생성한다.


application.properties

jsp경로
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

서버 포트 바꾸려면
server.port=80

jsp가 변경되었을 때 바로 적용
server.servlet.jsp.init-parameters.development=true

context path 설정
server.servlet.context-path=/



pom.xml에 dependency추가
  <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
  </dependency>

jstl도 사용하려면
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
  </dependency>

maven dependency는 https://mvnrepository.com 참고

src/main/webapp/WEB-INF/jsp 에 list.jsp를 생성하고,
컨트롤러에서 테스트
 @RequestMapping(value="/list", method = RequestMethod.GET)
 public String list() {
  return "list";
 }

 

2019년 5월 11일 토요일

대구/경북/경남 아이와 놀러갈만한 곳


  • 대구 아쿠아리움 - 유료
(2019년 5월기준)
대구광역시 동구 동부로 149
신세계백화점 9층에 위치.
아쿠아리움 입장 시 주차2시간 무료.(연간이용권)
생후 36개월 미만 아동은 보호자 1인당 1명 무료!(입장할 때 증빙서류 필요)

이벤트가 많고, 볼 것도 많음.

처음가면 와~ 하면서 봤지만, 계속 가다보면 그냥 그러려니 함.
개인적으로 당일입장권이 비싸다고 생각(성인기준 27,000원).
연간이용권은 성인기준 120,000원인데 할인기간을 노려보는것을 추천!



  • 어린이회관 - 무료
대구 수성구 동대구로 176

주차 유료(신용카드 결재가능 ㅋ)

다 필요없고

애들 놀이기구(?) 이용금액이 모두 단돈100원!

강추!


  • 산토끼 노래동산 - 유료
경남 창녕군 이방면 이방로 623
09:00 ~ 18:00






지속적인 업데이트 예정...


스프링 빈 등록 순서 오류 시 @PostConstruct 사용

  스프링 xml 설정에서 등록할 빈을 명시적으로 지정한 것과 <context:component-scan>와 혼용해서 사용한  경우 빈등록 순서 오류가 발생 할 수도 있습니다. 여러가지 방법이 있지만, 그 중에서 @PostConstruct ...