
전에 작성한 application-config.xml 파일 내의 파일을 확인해보면 bean 이 체크되어있는 것으 확인 할 수 있다.
bean태그의 scope 속성


singleton으로 주소값이 동일하다.
이를 bean 태그의 scope 속성을 사용해서 바꿀 수 있다.


Spring에서는 DAO보다 Repository 라고 많이 부른다.

@Repository를 추가하면 첫문자를 소문자로 만들어서 bean이름으로 만들어준다.
| Annotation | 설명 |
|---|---|
| @Component | 일반적인 컴포너트로 등록되기 위한 클래스에 사용합니다. |
| @Controller | 컨트롤러 클래스에 사용함 |
| @Service | 서비스 클래스에 사용함 |
| @Repository | DAO 클래스 또는 리포지토리 클래스에 사용함. |
| annotation | 설명 |
|---|---|
| @Autowired | 타입을 기준으로 의존성 주입을 설정합니다. 같은 타입 빈이 두개 이상 있으면 변수 이름으로 빈을 찾는다. |
| @Qualifier | 빈의 이름으로 의존성 주입을 설정한다. @Autowired 와 같이 사용되어야 함. |
| @Resource | name을 속성을 이용하여 빈의 이름을 직접 지정합니다. JavaSE의 annotation |
@Autowired와 @Qualifier를 같이 사용하는 것과 같다.
@Resource(name) 과 같이 사용함
java.inject.Resource |
| @Inject | @Autowired와 같다. JavaSE의 annotation
타입을 기준으로 의존성 주입을 함
javax.inject.Inject |
Annotation의 단점 : 이후 파일이 많아졌을 때 어떤 파일이 의존을 하는지 알기 위해서는 직접 다 코드를 까봐야 함.


Member.java
package com.sample.myapp.member;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Setter @Getter
@ToString
public class Member {
private String memberId;
private String name;
private int age;
private String email;
}
먼저 변수들을 정의서에 맞게 정의해주고 lombok annotation을 이용해 @Setter @Getter @ToString을 만들어준다. lombok은 pom.xml에 다음과 같이 추가해주면 사용이 가능하다.
https://central.sonatype.com/artifact/org.projectlombok/lombok
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</dependency>
IMemberService.java
package com.sample.myapp.member;
public interface IMemberService {
Member getMemberInfo();
}
인터페이스를 만들어 getMemberInfo라는 함수를 전에 정의한 Member형식으로 선언해준다.
MemberService.java
package com.sample.myapp.member;
import org.springframework.stereotype.Service;
@Service
public class MemberService implements IMemberService {
public Member getMemberInfo() {
Member member= new Member();
member.setMemberId("1234");
member.setName("Tomson");
member.setAge(23);
member.setEmail("example@abc.def");
return member;
}
}
인터페이스에서 정의하였던 getMemberInfo()의 세부 내용을 작성해준다. member 변수를 새로 만들어주고 거기에 set으로 아이디와 이름 등을 가져와준 다음 member로 리턴해준다.
MemberController.java
package com.sample.myapp.member;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
public class MemberController {
@Autowired
IMemberService memberService;
public void setMemberService(IMemberService memberService) {
this.memberService = memberService;
}
public void printInfo() {
Member member =memberService.getMemberInfo();
System.out.println(member.toString());
}
}
xml에서 빈을 설정해줄거라면 받아와줄 set이 필요하다.
MemberMain.java
package com.sample.myapp.member;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MemberMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
AbstractApplicationContext context=
new GenericXmlApplicationContext("application-config.xml");
MemberController controller=context.getBean(MemberController.class);
controller.printInfo();
// System.out.println(controller);
context.close();
}
}