220816 오늘의 훈련 / 스프링부트

(。◠ ◠。)·2022년 8월 16일

국비 개발 훈련 일기

목록 보기
18/35

스프링부트

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("다른 객체입니다.");
		}
		
	}
    

anotation

@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 방식";
	}
}

model

@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;
		
	}
}
profile
화이탱!

0개의 댓글