본문 바로가기

분류 전체보기278

[20220330] 개발자 일기 회사 CMS에서 Service를 사용할 때 인터페이스를 주입하고 인터페이스를 ServiceImpl 클래스에 메서드를 구현하여 사용하고 있었다. 이렇게 사용했을 때 인터페이스를 구현한 메서드가 아닌 ServiceImpl에만 있는 메서드는 사용이 불가능했다. 그래서 ServiceImpl을 직접 주입해서 사용하려고 했는데 빈을 찾지 못해서 실패했다. 결국, 인터페이스에도 메서드를 추가해줘서 해결했다. 이런 방식은 매번 인터페이스와 구현 클래스에 두 번 작성해줘야 해서 번거로운 것 같다. 좀 더 나은 해결책이 있는지 찾아보려고 한다. 2022. 3. 30.
[20220329] 개발자 일기 & TIL 스프링의 컨트롤러를 다루면서 생각해보니, 하나의 메서드는 뷰 이름을 리턴해주는 게 맞지 않을까 하는 생각이 들었다. 뷰가 아니라 다른 메서드의 매핑 값으로 redirect 해버리면, 코드를 읽는 사람은 그 메서드가 어떤 작업을 수행하는지 알기 위해 그 메서드를 찾아가야 한다. 나는 이게 절차적 프로그래밍의 goto문 같다는 생각이 들었다. goto문이 코드를 읽기 어렵게 만들기 때문에 지양하라고 하듯이 redirect를 쓰면 컨트롤러 메서드 간에 결합도가 높아지기도 하니까 안 쓰는 게 어떨까 싶었다. 대신 이동이 필요하다면, 뷰에서 자바스크립트로 이동시키려고 한다. 또, 컨트롤러에서 url에 파라미터로 데이터 전달하지 말고, model 객체로 전달하자. TIL 자바스크립트에서 keydown, keypre.. 2022. 3. 29.
[20220328] 개발자 일기 & TIL 집안 사정으로 인해 지난주에 TIL을 하지 못했다. 지지난주부터 조짐이 있었는데 일이 터져버리는 바람에 어쩔 수가 없었다. 이번 주부터는 열심히 다시 시작해보려고 한다. 스프링 @Transactional 애너테이션의 propagation 옵션 Propagation.REQUIRED: 기본값. 부모 트랜잭션 있으면 부모 트랜잭션 내에서 실행. 없으면 새로운 트랜잭션 생성. 자식 트랜잭션 내 예외 발생 시 부모 트랜잭션도 롤백. Propagation.REQUIRED_NEW: 항상 새로운 트랜잭션 생성. 부모 트랜잭션과 자식 트랜잭션이 독립적이므로, 자식 트랜잭션 내에서 예외 발생 시 자식 트랜잭션만 롤백되고 부모 트랜잭션은 롤백 안 됨. Propagation.NESTED: 해당 메서드가 부모 트랜잭션에서 진행.. 2022. 3. 28.
[20220321] 개발자 일기 & TIL 개발 첫 단계가 마무리가 되어 어느 정도 여유가 생겼다. 앞으로는 새로운 cms 개발을 위한 공부에 시간을 투자해야 할 것 같다. 유지 보수에 너무 많은 노력을 쏟지 말아야겠다. 최대한 단순하게 문제를 해결하고 나머지는 개발에 치중하자. 그렇게 하는 게 회사를 위해서도 나를 위해서도 더 나은 선택일 것 같다. TIL jquery의 $.each(), $(selector).each()에서 반복문을 탈출하기 위해서는 return false;를 사용하면 된다. 이는 다른 언어의 break에 해당한다고 보면 된다. 2022. 3. 21.
728x90