본문 바로가기

Spring

(23)
프로젝트 import가 안될때 팀에서 전달받은 취합본으로 옮겨가려는데 import가 불가능하다. 현재 workspace에 있는 프로젝트명과 중복되기 때문에 안된다고 한다. 분명 import할 프로젝트의 이름을 수동으로(폴더이름을) 변경했는데 도대체 왜 안될까 Some Projects cannot be imported because they already exist in the workspace. 구글링했더니, .project 파일을 메모장으로 열어서 import하려는 프로젝트가 가지는 이름을 직접 변경해야한다고 한다. 단순 폴더이름 변경해선 변경이 안됨. 이글 참고
프로젝트 구현 중 Mybatis ${result.STUDENT_NO} 개념 정리도 제대로 안하고 프로젝트에 들어갔는데, 특히나 마이바티스는 코드를 보고 대충 짐작해서 쓰는 수준이다. 지금은 여유가 없기 때문에 구현부터 하면서 대략적으로 정리해둔 뒤, 나중에 다시 공부하면서 개념을 다시 정리할 예정이다. 데이터를 List로 가져오고 싶을때 List임에도 불구하고 type은 객체명을 쓴다. select emp_id, emp_password from member; Q. ResultMap은 왜 쓰는가? 컬럼명과 클래스의 필드명이 다를 때 둘을 매핑하기 위해 쓴다. select태그 안에는 resultType대신 resultMap 속성을 쓰고, 상단에 따로 컬럼명과 프로퍼티명(객체의 필드명)을 매핑한다. select emp_id, emp_pass..
프로젝트 구현 중 에러 정리 NoSuchMethodError: org.springframework.util.MimeType 에러 어저저저쩌고 엄청 길지만 일단 해결되어서 간략하게만 적는다. 타일즈 라이브러리 적용이 안돼 혹시 spring mvc 버전 문제인가 싶어 버전을 임의로 5.3.7로 높여버렸는데 거기서 해당 에러가 났다. 변경내용을 주석처리하고, 원래 내용을 살리니 돌아온다. 잘 모르는 상태에서 설정 파일 만지려니 변경 내용 하나하나 기록해두는 게 낫겠다. log4j.dtd 지정된 파일을 찾을 수 없습니다 구글링 후 logf4.xml에서 최상단 log4j의 주소를 웹주소로 변경 경고 아이콘은 사라졌는데 여전히 로그에는 오류메세지가 뜬다 더보기 SLF4J: Failed to load class "org.slf4j.impl.St..
뉴렉처 메이븐 IDE : 이클립스, IntelliJ, Visual Studio Code 개발환경을 총 망라한 개발툴로 편집기, 컴파일러, 탐색기, 편집기, 콘솔, 디버거,빌드툴 등 포함 형상관리(버전관리)툴 : Git, CVS 테스트툴 : JUnit 빌드툴 : 메이븐, Gradle, Ant 메이븐 설치, 환경설정 후 E드라이브에 maven폴더를 만들었음 메이븐 프로젝트를 생성하기 위해 E드라이브로 이동 e: cd maven dir을 통해 디렉터리 안의 내용 확인 이클립스로 프로젝트를 만들면 이클립스의 템프릿 가지고 만들어짐 메이븐은 내가 자주만드는 형태를 정해놓고 거기서부터 프로젝트가 실행될 수 있도록 함 이런 기본 타입을 archetype이라 하고, 어딘가에 공유할 수 있음. 다른 사람이 이를 모태로 프로젝트로 만들..
뉴렉처 스프링 AOP AOP (Aspect Oriented Programming) AOP는 스프링과 무관하게 방법론 지금까지 OOP에만 관심있었음. 사용자가 원하는 업무 기반의 로직 사실 우리가 체감하지 못했던 코드들이 주업무로직 외에 들어가 있었음 개발자, 운영자가 만들다가 개발, 운영의 필요성에 따라 넣게 된 부가적 코드들 사용자의 관점(코어업무)에서 보고 객체 지향 프로그래밍해왔다면 개발자, 운영자의 관점 또한 반영하는 관점지향 프로그래밍 Primary(Core) Concern과 Cross-cutting Concern - 코어업무(예약, 계좌이체 등) 외에 코어업무를 수행하기 위해 필요한 기타 업무들 (로그처리, 보안처리, 트랜잭션처리) - 로그처리 : 성능 테스트를 위해 시간출력로그, 권한 여부 알아보기 위해 조건처리..
뉴렉처 스프링 강의 DI DAO, Service를 통해 서비스함수를 나눠놓는데 JDBC의 transaction을 관리하기가 어려워짐 스프링 dependency injection, transaction management 용이하게 함 Java EE를 통해 분산형, 기업형 프로그램을 만들다가 스프링이 EE의 주무기 (DI, DB Transaction처리)를 더 깔끔하게 처리 MVC - DI - 느슨한 결합력과 인터페이스(자바강의 33강 인터페이스 참고) private B b = new B1(); b.getData(); 프로그램의 유지보수를 위해 인터페이스를 사용하는 것이 좋다. Service에서 자료형을 인터페이스로 쓴다면, DAO 변경에 따라 소스코드를 수정해야 할 일 줄어듦 여전히 B1()을 B2()로 수정해야 하는 문제 남음...
뉴렉처 서블릿4 - 공지사항 게시판 만들기 예제 코드의 분리 필요에 따라서, 작업 범위에 따라서 코드를 잘개 분리할수도 있고, 통합적으로 처리할 수 있다. 기본적으로 사용자의 요청을 처리하고 제어를 담당하는 Servlet(Controller), 문서를 출력하는 View(.jsp)가 존재한다. 혼자 개발하고 서비스할 때는 단순히 코드를 둘로 분리해도 좋지만, 여럿이서 협업하고 분업해야 할 때는 업무서비스(트랜잭션)을 사용자 입출력 Servlet과 분리하는 게 보편적이다. 예를 들어 계좌이체같은 요청이 오면 Servlet은 이를 업무서비스로 전달하고 결과를 받아 문서로 받아 view단으로 전달한다. 이를 통해 실수를 최소화하고 업무서비스의 재사용이 가능해진다. Servlet의 경우 변경사항이 비교적 많기 때문에 이런 코드의 분리는 협업에서 더욱 효율을 높..
뉴렉처 스프링 MVC 톰캣을 가지고 웹개발 가능 Tomcat (Tomcat Configuration) - web.xml - 사용할 라이브러리 인스턴스화(설정) Mybatis, Tiles, ... -Spring Dispatcher : front Controller를 스프링이 제공 Spring Web (Spring Configuration) - web.xml에 Spring Dispatcher을 올리면 Spring이 모든 것을 관할하려고 함 (라이브러리 기타 등등) + 사용할 라이브러리 인스턴스화(설정) Mybatis, Tiles, ... -Spring Dispatcher : front Controller를 스프링이 제공 - Servlet | Service | Security | Mybatis | Tiles ... - XML에 A..