Spring
스프링이란? : 프로젝트를 진행하다 보면 아무리 분업을 해도 분명 중복되는 코드가 있기 마련이다.
Spring은 이런 중복코드의 사용률을 줄여주고, 비즈니스 로직을 더 간단하게 해줄 수 있다.
이러한 스프링을 사용하기 위해서는 먼저 환경설정이 필요하다.
환경설정을 할때 필요한 것은 Spring Library가 필요하다. 이러한 라이브러리는
http://repo.spring.io/release로 접속한 후 [org] - [springframework] - [spring] - [4.3.9.RELEASE] 선택
맨 위에 있는 [spring-framework-4.3.9.RELEASE-dist.zip]를 선택하여 다운 받아 압축을 해제한다.
위의 사진처럼 5개의 라이브러리만 가져다 놓으면 Spring을 사용할 준비가 되었다!!🔥🔥🔥
(단 SpringMVC나 SpringWeb,MyBatis연결은 추가로 라이브러리가 필요하다)
Spring DI(Dependence Injection)
DI : 각 클래스들 간의 의존성(관계)을 정의하는 것 이다.
<!-- bean은 자바객체를 의미한다 빈이 불려지면 ex1.vo.Test1를 생성하고 msg라는 멤버변수에 글을 넣어준거다. -->
<bean id="t1" class="ex1.vo.Test1">
<property name="msg"><!-- t1.setMsg("DI연습입니다."); : setter 인잭션 -->
<value>DI연습입니다.</value>
</property>
</bean>
<bean id="t2" class="ex1.vo.Test2">
<property name="str" value="안녕하세요 테스트입니다."/>
<property name="value" value="300"/> <!-- 즉 property가 setter인잭션이다.! -->
</bean>
위의 형식은 인잭션 중 setter인잭션이다.
setter 인잭션 : 객체를 생성하고 난 뒤 setter를 불러 값을 넣어주는 형식이다.
• 이런식으로 사용을 할려면 항상 클래스 안에 setter를 만들어 값을 받을 수 있는 setter를 만들어 줘야한다.
<bean id="t3" class="ex1.vo.Test3">
<!-- 생성자 인잭션이다 -->
<constructor-arg>
<value>Hello</value>
</constructor-arg>
<constructor-arg>
<value>500</value>
</constructor-arg>
<constructor-arg value="true"/>
</bean>
<bean id="t5" class="ex1.vo.Test5">
<constructor-arg ref="t3"/>
<bean id="empDao" class="mybatis.dao.EmpDAO" autowire="byType"/>
생성자 인잭션 : 객체를 생성할때 값들을 바로 넣어주는 형식이다.
• 생성자는 한개일 필요는 없다.
• 만약 멤버변수로 객체의 주소를 필요하다면 먼저 정의되 있는 객체중 하나의
주소가 필요할때는 ref=""여기에 미리 지정해둔 ID값으로 객체의 주소를 담아서 채워줄 수 있다.
• autrowire
따로 생성자인잭션 setter인잭션을 사용할 필요 없이 bean태그 안에 autowire 를 명시를 하면 값을 넣어준다.
• byType : 정의된 클래스의 자료형과 정보를 저장할려는 자료형이 같을 경우에 따로 인잭션을 정의할 필요없이
자료형이 같다면 알아서 정보를 넣어준다.
• byName : 해당 클래스의 속성과 자료를 넣어줄때 해당 id값 즉 속성과 bean객체의 id값이 같을 경우에만 자동
으로 정보를 넣어준다.
public class TestAction {
@Autowired
@Qualifier("vo2")
private TestVO tvo;
public TestVO getTvo() {
return tvo;
}
Annotaticon : 생성자,setter 인잭션이 없어도 해당 빈 객체에다가 값을 넣어 줄 수 있다.
단 applicationContext.xml에 "<context:annotation-config/>"를 맨 윗부분에 명시를 꼭 해줘야 한다.
• @Autowired : 이 명시를 정의해야지만 값을 인잭션없이 넣어줄 수 있다.
• @Qualifier("빈 객체 id값") : 만약 같은 객체의 다른값을 넣어줘야 할때 Qualifier를
명시해주지 않으면 어느 값이 들어갈지를 몰라 오류가 나기 때문에 꼭 명시를 해서 원하는
빈 객체의 id값을 명시를 하면 그 빈 객체의 값이 대입되게 된다!
이런식으로 Spring 환경설정과 DI를 알아보았다!!!🔥🔥🔥🔥