20240226 Spring 10 - 갤러리

Leafy·2024년 2월 25일
1

중앙_자바

목록 보기
46/76

갤러리

반응형으로 아래 화면처럼 요청이 들어온 걸로

https://velog.io/@juyeon/요구사항-정의서-작성하는-법

https://blog.naver.com/mogni/220670564871

Autowired 다 빼기

  • repository(DAO)마다 다 있는 이거 상속받는 걸로 중복 줄이기
@Autowired
private SqlSession sqlSession;

DAO 패키지에 상속받을 부모클래스 생성(AbstractDAO.java)

접근제어자 때문에 에러뜨니까 private -> (default)
protected가 상속받는 범위까지지만 같은 패키지에 존재하기 때문에 default도 되는거같다

  • util도 AbstractService에 빼기
@Autowired
Util util;

@Resource, @Inject, @Autowired 사용 (자동 의존성 주입)

@Resource

javax annotation api도 필요하다
https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api/1.3.2

pom.xml

<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>
@Resource(name="galleryService")
	private GalleryService galleryService;

이름을 꼭 맞춰줘야 한다.
일치하는 이름이 있으면 ok
@Autowired는 타입을 먼저 본다

GalleryService.java의 이름을 GalleryServiceImpl로 바꾼다 (implement라는 뜻)


이 이름만 맞으면 된다고 한다.

GalleryService라는 인터페이스를 만들었다. (그래서 기존 GalleryService 이름 변경함)

  • 인터페이스 사용
    상속 목적. 강제성을 위해..


이렇게 길어졌다.

GalleryService.java 인터페이스

public interface GalleryService {

	public int galleryInsert(GalleryDTO dto); //추상메서드
	public List<GalleryDTO> galleryList();
	public GalleryDTO detail(String no);
	
}

GalleryController.java

@Controller
public class GalleryController {
	//이래도 되는 이유는 부모 형태로 말해도 자식 형태가 들어갈 수 있으니까(다형성?)
	@Resource(name="galleryService") // 실제로 주입된 객체는 이름이 "galleryService"인 GalleryServiceImpl
	private GalleryService galleryService; // 여기서 말하는 GalleryService는 GalleryService 인터페이스

	// 여기에 메서드들 있다...

}

GalleryServiceImpl.java
인터페이스 추상메서드들 다 오버라이딩한다.

@Override
  • 인터페이스 만든 목적
    : 메서드 시그니처가 다 똑같아야 관리가 편하다
  • 전자정부에 이런 모양이 많다

우리 책(코드로 배우는 스프링 웹 프로젝트)은 jpa로 만들어져서 우리랑 좀 다르다

1개의 댓글

comment-user-thumbnail
2024년 2월 26일

매력적 치명적 딤섬🥟

답글 달기