본문 바로가기

IT 지식

[Spring] 스프링 프레임워크 기초

728x90
반응형

2016.02.21(일) 오후 6시 신촌 팟팟팟 3층 카페

 

결합관계

 - 상 결합도 : 직접적으로 클래스와 클래스가 결합하는 것

 - 중 결합도 : 인터페이스를 구현하여 클래스와 결합하는 것

 - 하 결합도 : 스프링 DI를 적용하여 클래스와 결합하는 것

 - 강한 결합관계가 중, 대규모 이상의 프로젝

트에서 좋지 않는 이유 ? 업무에 대한 범위 규정(통일성)을 할 수 있다.

 

스프링의 특징

 - 클래스의 결합도를 끊기 위해 인터페이스로 기술하여 메소드를 정의한다.

 - 필요한 인스턴스를 스프링에서 미리 생성 - 재활용이 높은 유연한 어플리케이션 작성

 - DI, AOP(중복제거) 중점적인 기술 사용

 - 어플리케이션 프레임워크라고 불린다(웹 전용물이 아니다)

 - 다형성, 범위규정(통일성), New 객체 생성하지 않는다.

 

스프링 객체 생성방법

 - application Context.xml에서 스프링 설정으로 new 한다.

 - <bead id=" " name=" " class="절대경로" > </bean>

 - 스프링은 기본이 싱글톤으로 설정되어 있음 : <bead id=" " name=" " class="절대경로" scope="singleton"> </bean>

 - 새로 객체를 생성하는 설정 : scope="prototype"

 - ApplicationContext context =  new ClassPathXmlApplicationContext("applicationContext.xml");

 - MessageBean bean = (MessageBean) context.getBean("messageBean");

 

의존성 주입 기법(Dependency Injection) : 스프링의 핵심개념

 - 객체 사이의 의존관계를 자기 자신이 아닌 외부에 의해서 설정된다는 개념

 - 생성자를 통한 DI(Constructor Injection) : <constructor-arg></constructor-arg> 사용

 - 설정 메소를 통한 DI(setter Injection) : <property name="bar"></property>

bar -> setBar로 해석한다.

 - 부픔의 연결이 특기

 - annotation으로 DI

byType : 형을 보고 인젝션하는 방법

byName : 이름으로 인젝션하는 방법

Autowired : annotation을 형식 기준으로 자동으로 주입한다. <context:annotation-config/>

Component-scan : component 관련된 annotation을 자동으로 등록한다. <context:component-scan base=package="sample.*"/>

component란? : 클래스를 만드는 단위, bean 설정한 것들을 모아놓은 것. @ annotaion

예) bean으로 설정

 <bean id="someController" class="chap02.chap02_server_code_design.no2_serverCodeDesignWithInterface.SomeControllerImpl">

<property name="someService" ref="someService" />

</bean>

<bean id="someService" class="chap02.chap02_server_code_design.no2_serverCodeDesignWithInterface.SomeServiceImpl">

<property name="someDao" ref="someDao" />

</bean>

 

예) component-scan으로 설정하는 것.

<context:component-scan base-package="chap02.chap02_server_code_design.no3_serverCodeDesignWithAnnotation"/>

 

728x90
반응형

'IT 지식' 카테고리의 다른 글

[Spring] Spring Security  (0) 2025.04.17
[JAVA] 메소드(Method)  (1) 2025.04.13
[JAVA] 변수와 연산자  (0) 2025.04.13
[XPLATFORM] Chap09_배포  (0) 2025.04.13
[XPLATFORM] Chap08_MLM  (0) 2025.04.13