본문 바로가기

[WEB] Back-End Framework & Library/스프링 프레임워크(Spring Framework)9

728x90
반응형
[2강] 스프링 프레임워크 개발환경 구축 및 예제 실행 0. 학습 목표 본 글에서는 스프링 프레임워크 개발환경을 구축하고 제가 만든 예제를 실행하는 것을 학습합니다. 제가 만든 예제는 조금씩 업데이트 될 것이며 실무적으로 스프링 기반 개발을 할 때 도움이 될 것입니다. 글과 사진으로 설명하는 것보다 동영상이 더 편하신 분들은 아래의 영상을 참고해주세요. 2강. 스프링 프레임워크 개발 환경 구축 및 예제 실행 1. 통합개발환경 설치 1-1. 통합개발환경 다운로드 스프링 프레임워크 통합개발환경(Integrated Development Environment, IDE)으로 STS(Spring Tool Suite 4)를 사용합니다. STS를 설치하기 위해 아래의 주소로 이동하여 STS 4.3.1 버전을 다운로드 받습니다. STS 4.3.1 다운로드 주소: https:.. 2023. 2. 9.
이클립스(Eclipse) 힙 메모리(Heap Memory) 상태창 활성화 이클립스 메모리 관찰 필요성 이클립스(Eclipse)의 경우 메모리 관련 문제 때문에 개발할 때 문제가 생길 수 있으므로 개발하면서 힙 메모리의 상태를 잘 관찰할 필요가 있다. 힙 메모리는 이클립스 우측 하단에 사용량을 확인할 수 있는 상태 창이 있는데 기본 설정으로는 이 창이 비활성화 되어 있어서 활성화 상태로 변경해야 한다. 이클립스 메모리 상태창 활성화 방법 아래의 사진처럼 'Window' → 'Preference' → ' General' 으로 이동하여 'Show heap status' 체크 박스를 활성화 하고 'Apply' 버튼을 눌러서 적용한다. 이렇게 설정이 잘 되면 이클립스 우측 하단에 메모리 사용량이 나타난 것을 확인할 수 있다. 참고문서 "이클립스 메모리 문제", 전자정부표준프레임워크포털.. 2023. 2. 9.
이클립스(Eclipse) 자바 버전과 메모리 크기를 설정하여 더 쾌적하게 개발하자 자바 버전과 메모리 크기를 설정하는 이유 이클립스(Eclipse)는 기본 설정 그대로 사용하면 사용할 때 매우 느린 경우가 있다. 특히 메모리가 부족한 경우 오류가 발생하면서 이상하게 실행되는 경우를 볼 수 있는데 이러면 개발할 때 큰 애로사항이 생긴다. 이 경우 자바 버전과 메모리 크기를 설정하면 이 문제를 예방할 수 있어서 쾌적하게 개발이 가능하다. 메모리 사용량을 보는 방법 아래의 사진처럼 이클립스 우측 하단에는 힙(Heap) 메모리 사용량이 나타나는데 메모리 관련 오류가 나면 할당된 메모리가 다 해제되고 이상하게 동작할 때도 있기 때문에 메모리에 여유가 있다고 생각하지 말고 구동할 때 메모리 사용량을 잘 지켜보면서 개발을 해야한다. 혹시 메모리 사용량이 보이지 않는다면 아래처럼 'Windows' .. 2023. 2. 8.
[스프링] DataSource 스프링 빈을 자바 코드로 생성하기 값을 읽어오는 방식 등의 이유로 DataSource 스프링 빈을 자바 코드로 생성해야하는 경우가 있다. 그런 경우 아래와 같은 소스 코드로 자바 빈을 생성할 수 있다. 예제 소스 연결하고자 하는 데이터베이스 맞춰서 드라이버와 주소, 계정 정보를 수정하여 사용한다. 아래 소스 코드는 스프링 프레임워크 4.0.9에서 동작하는 것을 확인했다. @Bean public DataSource dataSource() { SimpleDriverDataSource dataSourceVideo = new SimpleDriverDataSource(); dataSourceVideo.setDriverClass(org.mariadb.jdbc.Driver.class); dataSourceVideo.setUrl("jdbc:mariad.. 2022. 11. 23.
이클립스에서 'Project Facets'를 강제로 지정하는 방법 이클립스(Eclipse)에서는 아래의 사진처럼 간혹 공식적으로 지원하는 버전이 제한되서 'Project Facets'를 GUI에서 설정하지 못 하는 경우가 있다. 하지만 특정 환경에서 개발을 해야한다면 강제로 설정할 필요가 있다. 그런 경우 아래의 사진처럼 프로젝트 폴더에서 '.settings'라는 폴더로 이동하여 'org.eclipse.wst.common.project.facet.core.xml'을 텍스트 에디터로 열어서 수정하면 된다. 텍스트 에디터로 facet 파일을 열면 아래의 사진처럼 설정들이 나온다. 수정하기 전에 꼭 이클립스를 종료하여야 한다. 2022. 8. 11.
스프링(Spring) 프로젝트에서 메이븐(Maven)의 생명주기(lifecyle) 관련 문제가 발생할 때 문제 발생 최근에 스프링(Spring, 전자정부) 프로젝트에서 메이븐(Maven) 관련 오류가 발생했었다. 오류 메시지는 아래와 같았는데 문제 해결이랑 전혀 관계 없는 메시지라서 한참을 헤맸다. Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-compiler-plugin:maven-plugin:3.1:runtime Cause: invalid END header (bad central directory offset) 문제 해결 스프링 프로젝트의 메이븐 환경을 해제한 다음 기존 메이븐 저장소(Repository)를 비우고 다시 메이븐 환경을 프로젝트에 활성화한 후 메이븐 업데이트(Update)를 수행하니 해결.. 2022. 8. 9.
스프링 모바일을 추가하여 모바일 장치를 인식하자 스프링 프레임워크에서 모바일 장치를 인식하는 방법은 여러가지가 있겠지만 그 중 스프링 모바일을 가져와서 코드 몇줄만으로 장치를 인식하는 방법을 소개하려고 한다. 현재 기준으로 스프링 모바일은 2.0.0.M3가 안정적인 배포 버전이다. 메이븐으로 스프링 모바일을 프로젝트에 추가하는 방법은 아래와 같다. spring-milestones Spring Milestones https://repo.spring.io/libs-milestone false 메이븐 저장소를 위의 코드처럼 추가한다. org.springframework.mobile spring-mobile-device 2.0.0.M3 그리고 스프링 모바일 라이브러리를 위의 코드처럼 추가한다. 그 후 스프링 모바일 인터셉터를 위의 코드처럼 서블릿 설정파일에 .. 2021. 2. 12.
스프링 프레임워크에서 트랜잭션을 설정할 때 주의해야할 것 스프링 프레임워크에서 트랜잭션을 설정하는 것은 인터넷에 잘 나와있다. 하지만 몇 가지 중요한 포인트를 놓쳐서 하루 종일 시간을 날렸다. 트랜잭션 어노테이션 혹은 트랜잭션을 위한 AOP를 설정할 때는 서블릿 컨텍스트 설정 파일(servlet-context)에다가 해당 내용을 기입해야한다는 것이었다. "설정 값만 보면 정상인데 왜 이게 동작을 안 하지?"라는 생각을 하며 있었는데 참 허탈하다. 이거 외에도 컨트롤러가 아닌 @Component, @Service, @Repository 유형의 클래스 또는 그 클래스의 메서드에다가 트랜잭션을 설정한다는 점과 트랜잭션을 위해서는 인터페이스가 필요하다는 것을 알았다. 아직은 어떤 이유로 이렇게 써야하는 건지를 모르겠다. 나중에 알게 되면 내용을 추가하겠다. [참고] .. 2020. 9. 7.
스프링 시큐리티를 쓸 때 한글 관련 인코딩으로 주의해야할 점 스프링 시큐리티(Spring Security)를 쓴다면 주의해야할 것이 있다. 내가 이것 때문에 오랜 시간 삽질을 했었다. 스프링 시큐리티는 ISO/IEC 8859-1 인코딩을 쓰는데 필터 순서를 제대로 안 맞춰주면 스프링 시큐리티의 필터가 먼저 동작하여 인코딩이 의도한 대로 동작하지 않는다. 나는 한글을 사용해야하고 웹프로젝트와 DB 모두 UTF-8로 설정되어 있었기 때문에 UTF-8로 데이터가 통신되어야 하는데 web.xml 설정 파일에서 필터 순서를 잘 못 지정해줘서 데이터가 ISO/IEC 8859-1로 통신되고 있었다. 설정 파일에서 필터는 위에(낮은 라인 번호) 있는 것이 먼저 실행된다. 검색하다보니 정통적으로 실수하는 내용인 것을 알았다. 다시는 실수하지 않기 위해 글을 남긴다. [참조] [1.. 2020. 9. 6.