spring
Main -> MemberService -> Member DAO
spring boot
MemberController -> MemberService -> MemberRepository
순서는 이렇게 만든다.
fackage 를 이렇게 만들어준다
●MyConf
package org.example.Conf;
import org.example.component.AABBService;
import org.example.member.MemberDao;
import org.example.member.MemberService;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Controller;
@Configuration
public class MyConf {
@Bean
@Qualifier("memberservice1")
public org.example.user.MemberService memberService1(){
return new org.example.user.MemberService();
}
@Bean
public MemberDao memberDao() {
return new MemberDao();
}
@Bean
@Qualifier("memberservice2")
public org.example.member.MemberService memberService2() {
return new MemberService();
}
@Bean
public AABBService aabbService() {
return new AABBService();
}
}
객체 생성을 bean으로 생성 한다.
만약 파일 명이 동일하면 qualifier 을 이용한다 .
객체 생성을 bean으로 아니라 ComponentScan을 이용해서 한다.
ComponentScan ({안에는 파일명을 적어줘야 한다.})
객체 생성할 할 메소드에 Component 를 적어준다 .
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.4</version>
</dependency>
ComponentScan을 사용하기 위해선 자바 17버전에서 스프링프라임워크의 버전이 6.1.4 버전이여야 한다.
●Main
package org.example;
import org.example.Conf.MyConf;
import org.example.member.Member;
import org.example.member.MemberService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.example.member.Member;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConf.class);
// String str[] = context.getBeanDefinitionNames();
// Arrays.stream(str).forEach(s -> System.out.println(s));
Member member1 = Member.builder()
.email("aaa@naver.com")
.name("홍길동")
.password("1234")
.localDate(LocalDate.now())
.build();
Member member2 = Member.builder()
.email("bbb@naver.com")
.name("박길동")
.password("5678")
.localDate(LocalDate.now())
.build();
MemberService ms = context.getBean(MemberService.class);
ms.regist(member1);
ms.regist(member2);
ms.list();
context.close();
}
}
●Member
package org.example.member;
import lombok.*;
import java.time.LocalDate;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Builder
public class Member {
private long id;
private String email;
private String name;
private String password;
private LocalDate localDate;
}
●MemberDao
package org.example.member;
import org.springframework.stereotype.Component;
import java.util.Collection;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
@Component
public class MemberDao {
private Map<String,Member> map = new HashMap<>();
public static Long id =0L;
public void insert(Member member){
member.setId(++id);
map.put(member.getEmail(), member);
}
public Collection<Member> select(){
return map.values();
}
}
Map을 써서 map에 값을 넣는다.(insert)
map.values를 써서 등록된 값을 읽어 온다(select)
●MemberService
package org.example.member;
import lombok.ToString;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.util.Collection;
@Component
public class MemberService {
@Autowired
MemberDao memberDao;
// member 객체 등록
public void regist(Member member){
memberDao.insert(member);
}
//member 객체 출력
public void list(){
Collection<Member> collection = memberDao.select();
collection.stream().forEach(System.out::println);
}
}
regist에 dao.insert를 호출한다.
list에 dao.select를 호출하고
map.values를 collection으로 출력한다.
'spring' 카테고리의 다른 글
SPRING HATEOAS/Security == Intercepter (0) | 2024.03.15 |
---|---|
맥북에서 DBeaver spring 으로 연결 (0) | 2024.03.01 |
spring pom.xml (0) | 2024.02.28 |
spring 으로 게시판 (0) | 2024.02.23 |
Spring 기초 (0) | 2024.02.22 |