Spring 7

스프링 빈 스코프 prototype와 singleton의 차이

클래스 인스턴스 초기화를 할 때 호출할 initMethod()와 destroyMethod()를 만들어 놓았고, applicationContext.xml 파일에 bean을 등록하는 상황에서 init-method, destroy-method 속성 값으로 콜백 될 메서드를 넣어주었다. 스코프를 singleton으로 설정한 것과 prototype으로 설정한 것을 비교하는 상황이었다. singleton은 간단하게 하나의 객체만 생성이 되도록 해주는 것이니 아래처럼 작성했더라도 하나의 빈을 반환한다. 이와 다르게 prototype은 불릴 때마다 새로운 빈을 생성하여 init 메소드가 3번이 불리는 것을 볼 수 있다. 그런데 여기서 궁금증이 생겼다. init 메소드는 실행이 되었는데, destroy 메소드는 어디에...

지식 2024.10.14

[인텔리제이] 프로젝트 빌드 오류, 빌드 안됨

[문제] 간혹 인텔리제이에서 프로젝트를 생성하다가 문제가 생겼을 때 프로젝트를 열면, 폴더에 분명 src 등 모두 있는데 프로젝트에는 보이지 않고 .gitignore와 pom.xml 파일만 보이는 경우가 있었다. [해결] 햄버거 -> 파일 -> 프로젝트 구조 클릭. 좌측 모듈 -> + 버튼 클릭 -> 모듈 가져오기 클릭. 사용하려는 프로젝트 선택 후 하단의 확인 버튼 클릭.. 외부 모델에서 모듈 가져오기 클릭, Maven (Maven 프로젝트일 경우) 클릭하고 하단의 생성 버튼 클릭. 그러면 이렇게 제대로 빌드가 된 것을 확인할 수 있다.

error 2024.10.01

[Spring] 인텔리제이 스프링 프로젝트 실행

인텔리제이를 사용하게 되어 스프링 프로젝트 실행까지를 정리해 본다. 우선 인텔리제이 홈페이지에서 다운로드 페이지에 들어가면 Ultimate가 나오는데 그건 유료고, 커서를 조금 내려보면 Community Edition이 있으니 이것을 다운 받으면 된다. 설치 후 실행하면 아래처럼 나오는데, 새 프로젝트를 선택한다. 좌측의 Maven 원형 클릭하고, 프로젝트 이름, 위치, JDK 버전을 확인해주고, Archetype에서 quickstart를 선택해 주고 생성 버튼 클릭. 프로젝트가 다 설치되고 나면 아래와 같이 폴더를 만들어 경로를 설정해준다. pom.xml 파일에 추가할 의존성을 추가해 주고, 우측 상단의 Maven 변경 내용 로드 버튼( Ctrl + Shift + O ) 클릭. 4.0.0 org.e..

Spring 2024.09.25

[Spring] IoC와 AOP 이제는 이해해보자

공부할 때 분명 알았는데, 시간 지나면 잊어먹는 IoC와 AOP 이제는 외워야 할 때도 되었고, 혹시 또 잊어먹으면 바로 찾아보기 위해 정리를 할 것이다. 스프링을 시작하면서 가장 많이 들었던 이야기가 바로 '낮은 결합도'와 '높은 응집도'이다.  이것과 연관지어 IoC와 AOP를 정리해보자. 제어의 역행 (Inversion of Control, IoC) - 낮은 결합도 유지출처 입력IoC 적용 전: 의존관계에 있는 객체를 변경할 때는 반드시 자바 코드를 수정해야 한다.IoC 적용 후: 객체 생성을 컨테이너가 대신 처리하고, 객체와 객체 사이의 의존관계 역시 컨테이너가 처리한다.-> 소스에 의존관계가 명시되지 않기 때문에 결합도가 떨어져서 유지보수가 편리해진다. 한마디로 new 객체를 생성하지 않는다는 ..

지식 2024.06.25

Mac에서 STS3로 Spring Legacy Project로 Hello 띄우기

이번에는 STS3로 Spring Legacy Project를 생성하여 웹 브라우저에 Hello를 띄워볼 것이다. 제목에 언급했듯이 나는 보통 Mac에서 작업을 진행할 예정이다. JDK 11 Apache Tomcat 9 JDK와 Tomcat 버전은 이렇게 사용할 것이다. 맥 애플칩 환경이라 STS3를 실행하기까지 고된 시간이 필요했지만, 설치를 한 이후의 과정부터 정리를 해보겠다. 우선 STS3를 실행한다. 그다음 File -> New -> Spring Legacy Project를 눌러 새로운 프로젝트를 생성하자. 프로젝트 이름을 입력해 주고, Spring MVC Project를 클릭해 준 뒤, Next 버튼을 눌러준다. package를 입력할 때, 총 3 덩어리로 만들어 준다. 이렇게 하면 프로젝트 생성..

Spring 2024.01.29

Spring MVC 수행 흐름

대부분의 MVC 프레임워크는 비슷한 구조를 가지고 있는데 그 중 Spring MVC에 대해 알아보자. 1. 클라이언트로부터의 모든 ".do" 요청을 DispatcherServlet이 받는다. 2. DispatcherServlet은 HandlerMapping을 통해 요청을 처리할 Controller를 검색한다. 3. DispatcherServlet은 검색된 Controller를 실행하여 클라이언트의 요청을 처리한다. 4. Controller는 비즈니스 로직의 수행 결과로 얻어낸 Model 정보와 Model을 보여줄 View 정보를 ModelAndView 객체에 저장하여 리턴한다. 5. DispatcherServlet은 ModelAndView로부터 View 정보를 추출하고, ViewResolver를 이용하여..

지식 2024.01.15

도대체 프레임워크가 뭐야?

프레임워크에 대해서 확실하게 알아보자 개발 공부를 하면서 '프레임워크'라는 단어를 얼마나 듣게 될까? 그렇게 들어도 도대체 프레임워크가 무엇인지 정확하게 감이 잡히질 않는다. 기본 JDBC로 CRUD는 해보았으니, 스프링으로 넘어가기 위해 프레임워크가 무엇인지 잡고 넘어가보자. 프레임워크란? 프레임워크의 사전적 의미는 뼈대 혹은 틀로 이 의미를 소프트웨어 관점에서 접근하면 아키텍처에 해당하는 골격 코드이다. 개발을 할 때 전체 애플리케이션의 구조를 결정하는 것이 바로 아키텍처이고, 이 아키텍처에 해당하는 골격 코드를 프레임워크가 제공하는 것이다. 한마디로 프레임워크는 개발에서 기본이 되는 뼈대나 틀을 제공하는 아키텍처라고 이해하면 될 듯 하다. (프레임워크 = 아키텍처) 자, 여러명의 개발자에게 '게임'..

지식 2024.01.12