스프링부트
Spring Stater Project

서버 기입하기


build.gradle에 dependencies
jasper,jstl 마빈에서 그레이드 숏으로 도있음 여튼 추가
implementation 'javax.servlet:jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'

폴더 만들어주기

#jsp설정 해주기
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

@Configuration//스프링 설정으로 사용되는 객체
public class Config {
//빈(bean) : String이 IoC방식으로 관리하는 객체
//빈 팩토리(BeanFactory) : 스프링의 IoC를 담당하는 핵심 컨테이너
//어플리케이션 컨텍스트(ApplicationContext) : 빈 펙토리를 확장한 IoC컨테이너
@Bean //@Bean어노테이션이 붙은 메소드의 리턴값은 빈 객체로 등록되어 사용된다.
public Member member1() {
Member member1 = new Member();
member1.SetName("이마크");
member1.SetNickname("치타");
member1.SetPrinter(new PrinterA());
return member1;
}
//빈으로 등록할 떄 이름을 부여할 수 있다. 이름을 붙이지 않으면 메소드 이름이 빈Bean 이름이 된다.
@Bean(name="hello")
public Member member2() {
return new Member("시즈니","준희", new PrinterA());
}
@Bean
public PrinterA printerA() {
return new PrinterA();
}
@Bean
public PrinterB printerB() {
return new PrinterB();
}
}
public static void main(String[] args) {
//SpringApplication.run(Ex02JavaCodeDiApplication.class, args);
//1.IoC 컨테이너 생성
ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
//2. Member Bean 가져오기
Member member1 = (Member) context.getBean("member1");
member1.print();
//3. Member Bean 가져오기2
//(Member)이랑 Member.class 같다
Member member2 = context.getBean("hello", Member.class);
member2.print();
//4. PrinterB Bean가져오기
//원래 프린트 A인데 B로 넣어줌
Printer printer = context.getBean("printerB", Printer.class);
member1.SetPrinter(printer);
member1.print();
//5. 싱글톤 확인
if(member1 == member2) {
System.out.println("동일한 객체입니다");
}else {
System.out.println("다른 객체입니다.");
}
}
@Controller
public class MyController {
@Autowired
Member member1;
@Autowired
@Qualifier("printerB")//B지정해주기
Printer printer;
@Autowired
Member member2;
@RequestMapping("/")
public @ResponseBody String root() {
//1. Member Bean 가져오기
member1.print();
//2.PrintB Bean 가져오기
member1.SetPrinter(printer);
member1.print();
//3. 싱글통 확인
if(member1 == member2) {
System.out.println("동일한 객체입니다");
}else {
System.out.println("다른 객체입니다.");
}
return "Annotation 방식";
}
}
@Controller
public class MyController {
@RequestMapping("/")
public @ResponseBody String root() {
return "Model & view";
}
@RequestMapping("/test1")
public String test1(Model model) {
//Model 객체를 이용하여 view로 Data전달
model.addAttribute("name", "윤오");
return "test1";
}
@RequestMapping("/mv")
public ModelAndView test2() {
//데이터와 뷰를 함께 설정
ModelAndView mv = new ModelAndView();
List<String> list = new ArrayList<>();
list.add("test1");
list.add("test2");
list.add("test3");
mv.addObject("lists", list);
mv.addObject("ObjectTest", "테스트입니다");
mv.addObject("name", "툥");
mv.setViewName("view/myView");
return mv;
}
}