
@Transcational, @SpringWebMVC@SpringWebMVC의 경우 @Controller에서 Servlet을 생성하지 않아도, DispacherServlet이 알아서 request를 doGet, doPost로 받아 비즈니스상의 메소드를 호출한다.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ContextConfiguration {
@Bean(name="member")
public MemberDTO getMember() {
return new MemberDTO(1, "user01", "pass01", "홍길동");
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Application {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(ContextConfiguration.class);
// 설명. bean 목록 조회
String[] beanNames = context.getBeanDefinitionNames();
for (String beanName : beanNames) {
System.out.println("beanName: " + beanName);
}
// 설명. 1. bean의 id(bean의 이름)를 이용해서 bean을 가져오는 방법
MemberDTO member = (MemberDTO) context.getBean("member");
// 설명. 2. bean의 클래스 메타 정보(bean의 타입)을 전달하여 가져오는 방법
MemberDTO member = context.getBean(MemberDTO.class);
// 설명. 3. bean의 id와 클래스 메타 정보를 전달하여 가져오는 방법
MemberDTO member = context.getBean("member", MemberDTO.class);
System.out.println("member: " + member);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="member2" class=".. .MemberDTO">
<constructor-arg index="0" value="2"/>
<constructor-arg name="id" value="user02"/>
<constructor-arg index="2"><value>pass01</value></constructor-arg>
<constructor-arg name="name"><value>홍길동</value></constructor-arg>
</bean>
</beans>
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class Application {
public static void main(String[] args) {
ApplicationContext context = new GenericXmlApplicationContext("section02/xmlconfig/spring-context.xml");
MemberDTO member2 = (MemberDTO) context.getBean("member2");
System.out.println("Member2: " + member2);
}
@Controller: @Service:@Repository: DB에서 에러 발생시 java Exception으로 바꿔준다.[ContextConfiguration.java]
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration("configurationSection03") // configuration id
@ComponentScan(basePackages = "component scan scope with file path")
public class ContextConfiguration {
}
[MemberDAO.java]
@Repository
public class MemberDAO {
private final Map<Integer, MemberDTO> memberMap;
public MemberDAO() {
memberMap = new HashMap<>();
memberMap.put(1, new MemberDTO(1, "user01", "pass01", "홍길동"));
memberMap.put(2, new MemberDTO(2, "user02", "pass02", "유관순"));
}
// 설명. 회원 조회용 메소드
public MemberDTO selectMember(int sequence) {
return memberMap.get(sequence);
}
// 설명. 회원 가입용 메소드
public int insertMember(MemberDTO registMember) {
int before = memberMap.size();
memberMap.put(registMember.getSequence(), registMember);
int after = memberMap.size();
return after-before;
}
}