P02_DI
com.di.ex04
Day.java
package com.di.ex04;
import java.util.Calendar;
public abstract class Day {
public abstract String dayinfo();
public static Day getInstance() {
Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);
switch (day) {
case 1:
return new Sunday();
case 2:
return new Monday();
case 3:
return new Tuesday();
case 4:
return new Wednesday();
case 5:
return new Thursday();
case 6:
return new Friday();
default:
return new Saturday();
}
}
}
Sunday~Saturday.java
package com.di.ex04;
public class Sunday extends Day{
@Override
public String dayinfo() {
return "일요일";
}
}
applicationContext.xml
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="day" class="com.di.ex04.Day" factory-method="getInstance"></bean>
</beans>
DayTest.java
package com.di.ex04;
import org.springframework.context.support.GenericXmlApplicationContext;
public class DayTest {
public static void main(String[] args) {
GenericXmlApplicationContext context = new GenericXmlApplicationContext("com/di/ex04/applicationContext.xml");
Day today = (Day)context.getBean("day");
System.out.println("오늘 요일 : " + today.dayinfo());
context.close();
}
}
Main-run-console
오늘 요일 : 수요일
com.di.ex05
DateVO.java
package com.di.ex05;
public class DateVO {
private String name;
private String birth;
public DateVO(){}
public DateVO(String name, String birth) {
super();
this.name = name;
this.birth = birth;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
@Override
public String toString() {
return name + " 님의 생일 : " + birth;
}
}
applicationContext.xml
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userA" class="com.di.ex05.DateVO">
<property name="name">
<value>유저 A</value>
</property>
<property name="birth">
<value>2023-11-08</value>
</property>
</bean>
<bean id="userB" class="com.di.ex05.DateVO">
<property name="name" value="유저 B"/>
<property name="birth" value="2009-12-21"/>
</bean>
</beans>
DateTest.java
package com.di.ex05;
import org.springframework.context.support.GenericXmlApplicationContext;
public class DateTest {
public static void main(String[] args) {
GenericXmlApplicationContext context = new GenericXmlApplicationContext("com/di/ex05/applicationContext.xml");
DateVO userA = (DateVO)context.getBean("userA");
System.out.println(userA);
System.out.println();
DateVO userB = (DateVO)context.getBean("userB");
System.out.println(userB);
context.close();
}
}
Main-run-console
유저 A 님의 생일 : 2023-11-08
유저 B 님의 생일 : 2009-12-21
com.di.ex06
Emp.java
package com.di.ex06;
public class Emp {
private String name;
private int salary;
public Emp() {
super();
}
public Emp(String name, int salary) {
super();
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
@Override
public String toString() {
return name + " - 급여 : " + salary;
}
}
Developer.java
package com.di.ex06;
public class Developer extends Emp{
private String dept;
public Developer() {
}
public Developer(String name, int salary) {
super(name, salary);
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
@Override
public String toString() {
return super.toString() + " - 부서 : " + dept + "(개발부)";
}
}
applicationContext.xml
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="developer" class="com.di.ex06.Developer">
<constructor-arg value="deptA"/>
<constructor-arg value="3000"/>
<property name="dept" value="AI"></property>
</bean>
</beans>
EmpMain.java
package com.di.ex06;
import org.springframework.context.support.GenericXmlApplicationContext;
public class EmpMain {
public static void main(String[] args) {
GenericXmlApplicationContext context = new GenericXmlApplicationContext("com/di/ex06/applicationContext.xml");
Emp devA = (Emp)context.getBean("developer");
System.out.println(devA);
context.close();
}
}
Main-run-console
deptA - 급여 : 3000 - 부서 : AI(개발부)
com.di.quiz
Point.inter
package com.di.quiz;
public interface Point {
public void calcTot();
public void calcAvg();
public void showPoint();
}
PointDTO.java
package com.di.quiz;
public class PointDTO {
private String name;
private int kor;
private int eng;
private int math;
private int tot;
private double avg;
public PointDTO() {
}
public PointDTO(String name, int kor, int eng, int math) {
super();
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getTot() {
return tot;
}
public void setTot(int tot) {
this.tot = tot;
}
public double getAvg() {
return avg;
}
public void setAvg(double avg) {
this.avg = avg;
}
@Override
public String toString() {
return name + " - "+kor;
}
}
PointImpl.java
package com.di.quiz;
public class PointImpl implements Point{
PointDTO dto = new PointDTO();
public PointImpl(PointDTO dto) {
super();
this.dto = dto;
}
@Override
public void calcTot() {
int tot = dto.getKor() + dto.getEng() + dto.getMath();
dto.setTot(tot);
System.out.println("총점 : " + dto.getTot());
}
@Override
public void calcAvg() {
double avg = dto.getTot()/3.0;
dto.setAvg(avg);
System.out.println("평균 : " + dto.getAvg());
}
@Override
public void showPoint() {
System.out.println("이름 : " + dto.getName());
System.out.println("국어 : " + dto.getKor());
System.out.println("영어 : " + dto.getEng());
System.out.println("수학 : " + dto.getMath());
System.out.println("평균 : " + dto.getAvg());
}
}
applicationContext.xml
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="manA" class="com.di.quiz.PointDTO">
<constructor-arg value="manA"/>
<constructor-arg value="60"/>
<constructor-arg value="70"/>
<constructor-arg value="80"/>
</bean>
<bean id="pointImpl" class="com.di.quiz.PointImpl">
<constructor-arg ref="manA"/>
</bean>
</beans>
PointTest
package com.di.quiz;
import org.springframework.context.support.GenericXmlApplicationContext;
public class PointTest {
public static void main(String[] args) {
GenericXmlApplicationContext context = new GenericXmlApplicationContext("com/di/quiz/applicationContext.xml");
PointImpl data = (PointImpl)context.getBean("pointImpl");
data.calcTot();
data.calcAvg();
data.showPoint();
context.close();
}
}
Main-run-console
총점 : 210
평균 : 70.0
이름 : manA
국어 : 60
영어 : 70
수학 : 80
평균 : 70.0
P03_annotation
Annotation.txt
# annotation
- 코드 사이에 주석처럼 스이면서 특별한 의미, 기능을 수행하는 기술
# 주요 annotation
- @Autowired
> 의존관계를 자동으로 설정
@Autowired 이 붙은 인스턴스 변수는 해당 변수의 타입과 일치하는
컨텍스트 내의 빈을 찾아서 인스턴스 변수에 주입
- @Qualifier(value="bean name")
> 빈 객체 중 특정 빈을 사용하도록 선언
- @Component
> 클래스에 선언하며, 해당 클래스를 자동으로 빈으로 등록
- @Resource(name="bean name")
> 애플리케이션에서 필요로 하는 자원을 자동으로 연결할 때 사용
name 속성에서 자동으로 연결된 빈 객체의 이름을 설정
@Autowired 는 타입으로, @Resource 는 이름으로 연결
- @Configuration
> 클래스에 선언하며, @Bean 을 해당 class 의 method 에 적용하면
@Autowired 로 bean 을 부를 수 있다.
com.anno.ex01
Tire.inter
package com.anno.ex01;
public interface Tire {
public String getBrand();
}
KoreaTire.java
package com.anno.ex01;
import org.springframework.stereotype.Component;
@Component
public class KoreaTire implements Tire{
@Override
public String getBrand() {
return "한국 타이어";
}
}
applicationContext.xml
next ->

<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="com.anno.ex01"/>
</beans>
Car.java
package com.anno.ex01;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("carA")
public class Car {
@Autowired
private Tire tire;
public Car() {
System.out.println("- Car() -");
}
public Car(Tire tire) {
super();
this.tire = tire;
System.out.println("- Car(Tire) -");
}
public Tire getTire() {
return tire;
}
public void setTire(Tire tire) {
this.tire = tire;
}
public void checkTire() {
System.out.println(tire.getBrand() + " 사용");
}
}
CarMain.java
package com.anno.ex01;
import org.springframework.context.support.GenericXmlApplicationContext;
public class CarMain {
public static void main(String[] args) {
GenericXmlApplicationContext context = new GenericXmlApplicationContext("com/anno/ex01/applicationContext.xml");
Tire tireA = context.getBean("koreaTire", Tire.class);
System.out.println(tireA.getBrand());
Car carA = context.getBean("carA", Car.class);
carA.checkTire();
context.close();
}
}
Main-run-console
- Car() -
한국 타이어
한국 타이어 사용
com.anno.ex02
Food.java
package com.anno.ex02;
public class Food {
private String name;
private int price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Food [name=" + name + ", price=" + price + "]";
}
}
MyFood.java
package com.anno.ex02;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
@Component
public class MyFood {
@Resource(name="favorite")
private Food favoriteFood;
@Resource(name="unfavorite")
private Food unfavoriteFood;
public Food getFavoriteFood() {
return favoriteFood;
}
public void setFavoriteFood(Food favoriteFood) {
this.favoriteFood = favoriteFood;
}
public Food getUnfavoriteFood() {
return unfavoriteFood;
}
public void setUnfavoriteFood(Food unfavoriteFood) {
this.unfavoriteFood = unfavoriteFood;
}
@Override
public String toString() {
return "[favoriteFood : " + favoriteFood + " - unfavoriteFood : " + unfavoriteFood + "]";
}
}
applicationContext.xml
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="com.anno.ex02"/>
<bean id="favorite" class="com.anno.ex02.Food">
<property name="name" value="삼겹살"/>
<property name="price" value="16000"/>
</bean>
<bean id="unfavorite" class="com.anno.ex02.Food">
<property name="name" value="고무"/>
<property name="price" value="1000"/>
</bean>
</beans>
FoodMain.java
package com.anno.ex02;
import org.springframework.context.support.GenericXmlApplicationContext;
public class FoodMain {
public static void main(String[] args) {
GenericXmlApplicationContext context = new GenericXmlApplicationContext("com/anno/ex02/applicationContext.xml");
MyFood user = context.getBean("myFood", MyFood.class);
System.out.println(user);
context.close();
}
}
Main-run-console
[favoriteFood : Food [name=삼겹살, price=16000] - unfavoriteFood : Food [name=고무, price=1000]]
com.anno.ex03
Student.java
package com.anno.ex03;
public class Student {
private String name;
private String addr;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return name + " - 주소 : " + addr + " - 나이 : " + age;
}
}
applicationContext.xml

<?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:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="com.anno.ex03"/>
<bean id="student" class="com.anno.ex03.Student" p:name="stuA" p:age="20" p:addr="서울시"/>
<bean id="grade" class="java.lang.Integer">
<constructor-arg value="1"/>
</bean>
</beans>
School.java
package com.anno.ex03;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("mySchool")
public class School {
@Autowired
private Student man;
@Autowired
private int grade;
@Override
public String toString() {
return man + " - " + grade;
}
}
SchoolMain.java
package com.anno.ex03;
import org.springframework.context.support.GenericXmlApplicationContext;
public class SchoolMain {
public static void main(String[] args) {
GenericXmlApplicationContext context = new GenericXmlApplicationContext("com/anno/ex03/applicationContext.xml");
School stuA = context.getBean("mySchool", School.class);
System.out.println(stuA);
context.close();
}
}
Main-run-console
stuA - 주소 : 서울시 - 나이 : 20 - 1
com.anno.ex04
MyMessage.java
package com.anno.ex04;
import org.springframework.stereotype.Service;
@Service
public class MyMessage {
private String message;
public MyMessage() {
this.message = "즐거운 하루";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
applicationContext.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="com.anno.ex04"/>
</beans>
MessageMain.java
package com.anno.ex04;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MessageMain {
public static void main(String[] args) {
GenericXmlApplicationContext context = new GenericXmlApplicationContext("com/anno/ex04/applicationContext.xml");
MyMessage msg = context.getBean("myMessage", MyMessage.class);
System.out.println(msg.getMessage());
context.close();
}
}
Main-run-console
즐거운 하루
com.anno.ex05
UserService.inter
package com.anno.ex05;
public interface UserService {
public void show();
}
UserServiceImpl.java
package com.anno.ex05;
public class UserServiceImpl implements UserService{
@Override
public void show() {
System.out.println("service!");
}
}
AppConfig.java
package com.anno.ex05;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public UserService myService() {
return new UserServiceImpl();
}
}
ServiceMain.java
package com.anno.ex05;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class ServiceMain {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.anno.ex05");
context.refresh();
UserService service = context.getBean(UserServiceImpl.class);
service.show();
context.close();
}
}
Main-run-console
service!