본문 바로가기

JAVA/Spring

Spring FrameWork에 대하여

반응형

Spring FrameWork


FrameWork?

 : 틀, 뼈대

 어플리케이션을 개발하기 위한 기본적인 뼈대 

 (Class 모음집)


어떻게 하면 빈번한 수정에 유연하게 대처할 것인가?

스프링의 주요 특징

1. DI (Dependency Injection) 의존성 주입

 : 자바로 되어 있는 어플리케이션의 소스를 열어보면 무엇으로 구성되어 있나요? 

 ==> 수많은 객체(Class)로 구성되어 있다.

객체와 객체 사이에는 관계가 있다.

is a 관계 : 상속

has a 관계 : 멤버 ** 


예를 들어 A라는 객체를 멤버로 가진 객체가 수십가지가 있는데 일일이 바꾸기 힘들고 간혹 빼먹는 경우도 있을 것이다.

이 때 사람들은 원터치로 바꾸고 싶은 생각을 하였고 이를 환경설정(xml)에서 바꿀 수 있게 만든 것이 DI 사상이다.

그래서 xml 에서 A라는 객체 대신 B라는 객체를 넣게되면 기존에 A를 멤버로 가지고 있던 모든 객체에 B 객체가 반영된다.

그것도 환경설정(xml)에서 한번에 가능하다.


사용자에 의해 수정이 요구될만한 관계에 있는 두 객체를 소스코드에서 직접 객체를 생성하지 않고

스프링 컨테이너에 의해 객체를 제공하는 방식을 말한다.


2. AOP (Aspect Oriented Programming) 관점 지향 프로그래밍




스프링 jar 파일을 쓰기 위한 환경설정 

 : 이클립스 이용한 방법 과 sts 이용한 방법이 있음


두가지 방법 중 

이클립스를 이용한 방법

jar파일 적용

프로젝트명 오른쪽 단추 - Properties - java Build Path - Libraries - Add External JARs..

- jar파일있는 폴더안에 들어가서 jar 파일 다 선택 한후 Ok 누르기


bean컴프리션? 설정할 수 있는 플러그인 설치

help - Install New SoftWare - Work with 에 - 

http://springide.org/updatesite 치고 Enter 누르면 Pending 이라고 뜨다가 

항목이 나옴

Core / Spring IDE 체크 - next - next - accept 한 후에 finish


설치 후 이클립스 다시 실행 

User Agent Analysis 뜨고 Accept 누르면 됨


File - new - Other - Spring - Spring Bean Configuration File 이 나오면 잘 설치 된것임


전에 했던 예제 패키지 복사 한후에

src 누르고 위에 SBCF 나오게 한 후에 파일명 마음대로 지정 난 beans 한 후에 OK


beans.xml 에서 설정하기

<bean/> 하위노드가 없는 경우 이렇게 함

<bean id="ob" class="exam03.MessageBeanEn"/>


HelloApp 설정(pdf p.26 참고)


xml 파일은 프로젝트 밑에 둠..(안되면)

//////////////////////////////////////////////////////


** BeanFactory 가 최상위지만 이것에서 파생된 ApplicationContext를 사용하는 것이 일반적이다.


**  기본 생성자를 생성하지 않고 매개변수가 있는 생성자만 생성할 경우 

자바가 내부적으로 기본 생성자를 만들지 않기 때문에 에러가 난다.

그러므로 습관적으로 기본 생성자(디폴트)를 항상 생성해줘야 한다.


에러메세지 --> No default constructor found

<bean id="ob" class="exam05.MessageBeanEn"/>

기본생성자를 생성하지 않아서 오류 발생

위에 기본생성자 주석을 막지 않으면 오류 안남


//////


의존관계 설정 (속성을 갖는 것) 두가지 방법

생성자 방식 : 생성자 에서

프로퍼티 방식 : Setter 에서


반응형

'JAVA > Spring' 카테고리의 다른 글

RefreshScope 적용안되는 경우  (0) 2018.11.02
의존 관계 자동 설정에 관하여 (간단)  (0) 2016.07.03