SpringFramework : annotation

김다린·2024년 4월 16일

MVC

목록 보기
4/5

p 네임 스페이스


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

bean태그의 scope 속성


singleton으로 주소값이 동일하다.

이를 bean 태그의 scope 속성을 사용해서 바꿀 수 있다.

Annotation을 이용한 DI


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

@Repository를 추가하면 첫문자를 소문자로 만들어서 bean이름으로 만들어준다.

Bean 설정

Annotation설명
@Component일반적인 컴포너트로 등록되기 위한 클래스에 사용합니다.
@Controller컨트롤러 클래스에 사용함
@Service서비스 클래스에 사용함
@RepositoryDAO 클래스 또는 리포지토리 클래스에 사용함.

의존성 주입

annotation설명
@Autowired타입을 기준으로 의존성 주입을 설정합니다. 같은 타입 빈이 두개 이상 있으면 변수 이름으로 빈을 찾는다.
@Qualifier빈의 이름으로 의존성 주입을 설정한다. @Autowired 와 같이 사용되어야 함.
@Resourcename을 속성을 이용하여 빈의 이름을 직접 지정합니다. JavaSE의 annotation

@Autowired와 @Qualifier를 같이 사용하는 것과 같다.
@Resource(name) 과 같이 사용함
java.inject.Resource |
| @Inject | @Autowired와 같다. JavaSE의 annotation
타입을 기준으로 의존성 주입을 함
javax.inject.Inject |

Annotation의 단점 : 이후 파일이 많아졌을 때 어떤 파일이 의존을 하는지 알기 위해서는 직접 다 코드를 까봐야 함.

빈생성과 의존성 주입 비교(xml vs @)


실습


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();
		
	}

}

스프링 프레임워크 순서 정리

  1. Spring Legacy Project 생성하기
  2. 서비스 인터페이스와 클래스 정의하기
  3. 컨트롤러 클래스 정의하기
  4. 설정파일 만들기
  5. 설정 파일에 빈 생성 및 의존성 설정하기
  6. Main 만들고 실행하기
profile
한걸음씩 뚜벅뚜벅

0개의 댓글