-
스프링 - 기본 흐름 파악프로그래밍/Spring 스프링 2021. 11. 16.반응형
package com.look; public abstract class PizzaShop { public abstract Pizza makePizza(); public abstract Pizza makeVeggiePizza(); }
PizzaShop.java
- 추상 클래스인 피자샵과 메소드 피자만드는것() / 배지 피자 만드는것() 을 만든다.
package com.look; import java.util.concurrent.atomic.AtomicLong; public class Pizza { // 멀티 스레드 환경에서 안전하게 자동으로 숫자를 증가 시킬 수 있는 클래스 private static AtomicLong count = new AtomicLong(0); private boolean isVeg; public Pizza() { count.getAndIncrement(); } public void setIsVeg(boolean isVeg) { this.isVeg = isVeg; } public String toString() { return "A new" + (isVeg ? "veggie" : "") + " Pizza, count(" + count.get() + ")"; } }
Pizza.java
- 멀티 스레드 환경에서 숫자를 자동으로 증가 시킬 클래스를 이용해 객체를 만들고
- 피자가 일반 피자인지 배지 피자인지 알 수 있게 isVeg를 정의하고 setter를 이용해서 setIsVeg 를 만든다.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"> <!-- scope 기본 : singleton : 하나의 객체만 생성 --> <!-- scope="prototype" : 빈을 호출 할때마다 새로운 객체를 생성 --> <!-- 피자 --> <bean id="pizza" class="com.look.Pizza" scope="prototype"/> <!-- 배지 피자 --> <bean id="veggiePizza" class="com.look.Pizza" scope="prototype"> <property name="isVeg" value="true"/> </bean> <!-- 룩업 메소드 인젝션 : 컨테이너가 관리하는 빈의 메소드를 재정의하여 컨테이너 안의 다른 빈을 검색하는 기능 --> <bean id="pizzaShop" class="com.look.PizzaShop"> <lookup-method name="makePizza" bean="pizza"/> <lookup-method name="makeVeggiePizza" bean="veggiePizza"/> </bean> </beans>
applicationContext.xml
- 둘다 scope를 사용해서 bean을 호출 할때마다 객체를 새롭게 만들게 한다.
package com.look; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; public class App { public static void main(String[] args) { // 스프링 컨테이너 AbstractApplicationContext context = new GenericXmlApplicationContext("classpath:com/look/applicationContext.xml"); try { PizzaShop shop = (PizzaShop)context.getBean("pizzaShop"); Pizza p1 = shop.makePizza(); System.out.println("첫번째 피자 : " + p1); Pizza p2 = shop.makePizza(); System.out.println("2번째 피자 : " + p2); Pizza p3 = shop.makeVeggiePizza(); System.out.println("배지 피자 : " + p3); } finally { context.close(); } } }
App.java
- 프로그램을 실행하기 위한 파일
- AbstractApplicationContext context =
new GenericXmlApplicationContext("classpath:com/look/applicationContext.xml");경로는 전부 입력 해야한다.
반응형'프로그래밍 > Spring 스프링' 카테고리의 다른 글
STS3 - pom.xml 환경설정 (0) 2021.12.23 STS3 - UTF-8 인코딩 환경 설정하기 (0) 2021.12.23 STS3 - 프로젝트 생성 (0) 2021.12.23 스프링 - 간단한 회원 가입 개념 (0) 2021.11.20 스프링 - 계산기 만들기 (0) 2021.11.17