일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- PHPStorm
- OrCAD 다운로드
- 오류
- 따옴표 삭제
- 깃 토큰
- 파이썬
- csv
- 단축키
- database
- visualstudio code
- clone
- error
- error 해결
- 데이터베이스
- 에러
- DataGrip
- github token
- cmd
- Python
- Visual Studio Code
- vscode
- import data
- MySQL
- github clone
- localhost
- run sql script
- 클론
- jupyter
- php
- console창
- Today
- Total
개발 노트
10/18 constructor, property | InitializingBean, afterPropertiesSet(), @PostConstruct / DisposableBean, destroy(), @PreDestroy | singleton, prototype | xml, properties 본문
10/18 constructor, property | InitializingBean, afterPropertiesSet(), @PostConstruct / DisposableBean, destroy(), @PreDestroy | singleton, prototype | xml, properties
hayoung.dev 2022. 10. 21. 16:40[DI03]
Student(class)
package DI03;
public class Student {
private String name;
private int age;
private String gradeNum;
private String classNum;
//생성자
//constructor 방식
public Student(String name, int age, String gradeNum, String classNum) {
this.name = name;
this.age = age;
this.gradeNum = gradeNum;
this.classNum = classNum;
System.out.println("Student construct 시작...");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
System.out.println("Student setName 시작...");
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGradeNum() {
return gradeNum;
}
public void setGradeNum(String gradeNum) {
this.gradeNum = gradeNum;
}
public String getClassNum() {
return classNum;
}
public void setClassNum(String classNum) {
this.classNum = classNum;
}
}
StudentInfo.java(class)
package DI03;
public class StudentInfo {
private Student student;
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public StudentInfo(Student student) {
this.student = student;
}
public void getStudentInfo() {
if(student != null) {
System.out.println("이름 : " + student.getName());
System.out.println("나이 : " + student.getAge());
System.out.println("학년 : " + student.getGradeNum());
System.out.println("반 : " + student.getClassNum());
}
}
}
MainClass03 (class)
package DI03;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass03 {
public static void main(String[] args) {
String configLocation = "classpath:applicationCTX03.xml";
AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);
StudentInfo studentInfo = ctx.getBean("studentInfo", StudentInfo.class);
studentInfo.getStudentInfo();
Student student2 = ctx.getBean("student2", Student.class);
studentInfo.setStudent(student2);
studentInfo.getStudentInfo();
System.out.println("student2.getAge()-->"+student2.getAge());
System.out.println(student2.getAge()+5);
ctx.close();
//Classic
Student student3 = new Student("김유신3", 23, "3학년", "3번");
student3.setAge(32);
System.out.println("classic student3.getAge()-->"+student3.getAge());
}
}
applicationCTX03.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 = "student1" class="DI03.Student">
<property name="name"><value>양만춘</value></property>
<!-- constructor 방식 -->
<constructor-arg><value>연개소문</value></constructor-arg>
<constructor-arg value="50"/>
<constructor-arg><value>4학년</value></constructor-arg>
<constructor-arg><value>25번</value></constructor-arg>
</bean>
<bean id ="studentInfo" class="DI03.StudentInfo">
<constructor-arg>
<!-- student1 참조 -->
<ref bean="student1"/>
</constructor-arg>
</bean>
<bean id="student2" class="DI03.Student">
<!-- 인덱스를 주면 순서를 지정할 수 있다. -->
<constructor-arg index="0" value="김유신"/>
<constructor-arg value="30"/>
<constructor-arg value="3학년"/>
<constructor-arg value="11번"/>
</bean>
</beans>
출력 결과 : 모든 인스턴스들은 생성자가 모두 생성된 다음에 생성된다. 그래서 순서를 바꿔도 construct 시작과 setName 시작이 앞에 있다.
[DI05] : map 방식
CollectionBean(class)
package DI05;
import java.util.Map;
public class CollectionBean {
private Map<String, String> addressList;
public Map<String, String> getAddressList() {
return addressList;
}
public void setAddressList(Map<String, String> addressList) {
this.addressList = addressList;
}
}
MainClass05(class)
package DI05;
import java.util.Map;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass05 {
public static void main(String[] args) {
String configLocation = "classpath:applicationCTX05.xml";
AbstractApplicationContext ac = new GenericXmlApplicationContext(configLocation);
CollectionBean collectionBean = ac.getBean("collectionBean", CollectionBean.class);
Map<String, String> addressList = collectionBean.getAddressList();
System.out.println("홍길동 주소 : " + addressList.get("홍길동"));
System.out.println("중앙 주소 : " + addressList.get("중앙"));
}
}
applicationCTX05.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 = "collectionBean" class="DI05.CollectionBean">
<property name="addressList">
<map>
<entry>
<!-- map 방식의 key, value 형태 -->
<key><value>홍길동</value></key><value>율도국</value>
</entry>
<entry>
<key><value>중앙</value></key><value>이대캠퍼스</value>
</entry>
</map>
</property>
</bean>
</beans>
[DI06]
Student(class)
package DI06;
import java.util.ArrayList;
public class Student {
private String name;
private int age;
private ArrayList<String> hobbys;
private double weight;
private double height;
//xml에서 이렇게 쓰면 constructor, 나머지는 property로 작성
public Student(String name, int age, ArrayList<String> hobbys) {
this.name = name;
this.age = age;
this.hobbys = hobbys;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public ArrayList<String> getHobbys() {
return hobbys;
}
public void setHobbys(ArrayList<String> hobbys) {
this.hobbys = hobbys;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
StudentInfo(class)
package DI06;
public class StudentInfo {
private Student student;
public StudentInfo() {
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
MainClass06(class)
package DI06;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass06 {
public static void main(String[] args) {
String configLocation1 = "classpath:applicationCTX610.xml";
String configLocation2 = "classpath:applicationCTX611.xml";
AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation1, configLocation2);
Student student1 = ctx.getBean("student1", Student.class);
System.out.println(student1.getName()); //선덕여왕
System.out.println(student1.getHobbys()); //승마, 정치
StudentInfo studentInfo = ctx.getBean("studentInfo1", StudentInfo.class);
Student student2 = studentInfo.getStudent();
System.out.println(student2.getName()); //선덕여왕
System.out.println(student2.getHobbys()); //승마, 정치
if(student1.equals(student2)) {
System.out.println("student1 == student2");
}
Student student3 = ctx.getBean("student3", Student.class);
Student student4 = ctx.getBean("student3", Student.class);
System.out.println(student3.getName()); // 이순신
System.out.println(student4.getName()); // 이순신
if(student1.equals(student3)) {
System.out.println("student1 == student3");
} else {
System.out.println("student1 != student3");
}
if(student3.equals(student4)) {
System.out.println("student3 == student4");
} else {
System.out.println("student3 != student4");
}
}
}
applicationCTX610.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="student1" class="DI06.Student">
<constructor-arg value="선덕여왕"/>
<constructor-arg value="30"/>
<constructor-arg>
<list>
<value>승마</value>
<value>정치</value>
</list>
</constructor-arg>
<property name="weight" value="55" />
</bean>
<bean id="studentInfo1" class="DI06.StudentInfo">
<property name="student">
<ref bean="student1" />
</property>
</bean>
</beans>
applicationCTX611.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="student3" class="DI06.Student" scope="singleton">
<constructor-arg value="이순신" />
<constructor-arg value="55" />
<constructor-arg>
<list>
<value>활쏘기</value>
<value>검술</value>
</list>
</constructor-arg>
<property name="height">
<value>177</value>
</property>
<property name="weight" value="70" />
</bean>
</beans>
출력 결과
[DI07]
Student (class)
package DI07;
import java.util.ArrayList;
public class Student {
private String name;
private int age;
private ArrayList<String> hobbys;
private double weight;
private double height;
//xml에서 이렇게 쓰면 constructor, 나머지는 property로 작성
public Student(String name, int age, ArrayList<String> hobbys) {
this.name = name;
this.age = age;
this.hobbys = hobbys;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public ArrayList<String> getHobbys() {
return hobbys;
}
public void setHobbys(ArrayList<String> hobbys) {
this.hobbys = hobbys;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
MainClass07 (class)
package DI07;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MainClass07 {
public static void main(String[] args) {
//이 코드 때문에 ApplicationConfig.java를 생성한 것임.
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
Student student1 = ctx.getBean("student1", Student.class);
System.out.println("이름 : " + student1.getName());
System.out.println("나이 : " + student1.getAge());
System.out.println("취미 : " + student1.getHobbys());
System.out.println("신장 : " + student1.getHeight());
System.out.println("몸무게 : " + student1.getWeight());
Student student2 = ctx.getBean("student2", Student.class);
System.out.println("이름 : " + student2.getName());
System.out.println("나이 : " + student2.getAge());
System.out.println("취미 : " + student2.getHobbys());
System.out.println("신장 : " + student2.getHeight());
System.out.println("몸무게 : " + student2.getWeight());
ctx.close();
}
}
ApplicationConfig (class)
package DI07;
import java.util.ArrayList;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ApplicationConfig {
@Bean
public Student student1() {
//배열을 따로 만들 수 없는 자바코드 특성 상 먼저 작성한 것.
ArrayList<String> hobbys = new ArrayList<String>();
hobbys.add("팝뮤직");
hobbys.add("피아노");
//생성자로 Student.java에 있는 Student()를 불러와야 함
Student student = new Student("안예은", 24, hobbys);
//나머지는 setter를 이용
student.setHeight(160);
student.setWeight(50);
return student;
}
/* Bean을 달아야 xml과 연결됨. <Bean>태그와 같음. */
@Bean
public Student student2() {
ArrayList<String> hobbys = new ArrayList<String>();
hobbys.add("뮤지컬");
hobbys.add("음악감상");
Student student = new Student("김준수", 35, hobbys);
student.setHeight(178);
student.setWeight(76);
return student;
}
}
출력 결과 : Spring에는 xml 방식과 annotation 방식이 있는데 annotation방식이 더 편해서 이걸 더 많이 쓴다.
[DI08]
Student (class)
package DI08;
import java.util.ArrayList;
public class Student {
private String name;
private int age;
private ArrayList<String> hobbys;
private double weight;
private double height;
public Student(String name, int age, ArrayList<String> hobbys) {
this.name = name;
this.age = age;
this.hobbys = hobbys;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public ArrayList<String> getHobbys() {
return hobbys;
}
public void setHobbys(ArrayList<String> hobbys) {
this.hobbys = hobbys;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
MainClass08 (class)
package DI08;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass08 {
public static void main(String[] args) {
AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX08.xml");
Student student1 = ctx.getBean("student1", Student.class);
System.out.println("이름 : " + student1.getName());
System.out.println("나이 : " + student1.getAge());
System.out.println("취미 : " + student1.getHobbys());
System.out.println("키 : " + student1.getHeight());
System.out.println("몸무게 : " + student1.getWeight());
Student student2 = ctx.getBean("student2", Student.class);
System.out.println("이름 : " + student2.getName());
System.out.println("나이 : " + student2.getAge());
System.out.println("취미 : " + student2.getHobbys());
System.out.println("키 : " + student2.getHeight());
System.out.println("몸무게 : " + student2.getWeight());
ctx.close();
}
}
applicationCTX08.xml (bean과 context 추가. 만약 추가 못한 경우 Namespaces에서 추가 가능)
<?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 http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<context:annotation-config/>
<!-- 연결만 시키면 되기 때문에 id를 적지 않는다. class만 적는다. -->
<bean class="DI08.ApplicationConfig"></bean>
<bean id="student2" class="DI08.Student">
<constructor-arg value="양만춘" />
<constructor-arg value="30" />
<constructor-arg>
<list>
<value>활쏘기</value>
<value>안시성</value>
</list>
</constructor-arg>
<property name= "height" value="175"/>
<property name="weight" value="70" />
</bean>
</beans>
ApplicationConfig (class)
package DI08;
import java.util.ArrayList;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ApplicationConfig {
@Bean
public Student student1() {
ArrayList<String> hobbys = new ArrayList<String>();
hobbys.add("수영");
hobbys.add("물내리기");
Student student = new Student("을지문덕 ", 55, hobbys);
student.setHeight(170);
student.setWeight(70);
return student;
}
}
출력 결과
<och04_sdlc>
pom.xml 복사해서 추가하기
[sdlc01]
Student (class, InitializingBean, DisposableBean 인터페이스 상속.)
package sdlc01;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class Student implements InitializingBean, DisposableBean {
private String name;
private int age;
//소멸자 소멸 전 작동
//DisposableBean를 상속받은 경우 destroy()라고 작성
public void destroy() throws Exception {
System.out.println("Student의 destroy() --> 소멸자가 소멸되기 전..");
}
//생성자 생성 이후 작동
//InitializingBean를 상속받은 경우 afterPropertiesSet()라고 작성
public void afterPropertiesSet() throws Exception {
System.out.println("Student의 afterPropertiesSet() --> 생성자 생성 이후");
}
public Student(String name, int age) {
this.name = name;
this.age = age;
System.out.println("Student 생성자...");
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
OtherStudent (class)
package sdlc01;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
public class OtherStudent {
private String name;
private int age;
//생성자 생성 이후 작동
//@PostConstruct : 상속받지 않은 경우 afterPropertiesSet과 같은 기능을 함.
@PostConstruct
public void initMethod() {
System.out.println("OtherStudent의 initMethod() 생성자 생성 이후");
}
//소멸자 소멸 전 작동
//@PreDestroy : 상속받지 않은 경우 destroy와 같은 기능을 함.
@PreDestroy
public void destoryMethod() {
System.out.println("OtherStudent의 destoryMethod() 소멸자가 소멸되기 전..");
}
public OtherStudent(String name, int age) {
this.name = name;
this.age = age;
System.out.println("OtherStudent 생성자...");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
MainClass01 (class)
package sdlc01;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass01 {
public static void main(String[] args) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
System.out.println("1. ctx.load Before");
ctx.load("classpath:applicationCTX01.xml");
System.out.println("2. ctx.laod After");
//실제 Bean 생성
//ctx를 비움
ctx.refresh();
System.out.println("3. ctx.refresh After");
ctx.close();
System.out.println("4. ctx.close After");
}
}
src/main/resources > applicationCTX01.xml (bean, context 추가)
<?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 http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<context:annotation-config></context:annotation-config>
<bean id="student" class="sdlc01.Student">
<constructor-arg value="김춘추" />
<constructor-arg value="30" />
</bean>
<bean id="otherStudent" class="sdlc01.OtherStudent">
<constructor-arg value="유성룡" />
<constructor-arg value="50" />
</bean>
</beans>
출력 결과
[sdlc02]
Student (class)
package sdlc02;
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
MainClass02 (class)
package sdlc02;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass02 {
public static void main(String[] args) {
AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX02.xml");
Student student1 = ctx.getBean("student", Student.class);
System.out.println("student1 이름 : " + student1.getName());
System.out.println("student1 나이 : " + student1.getAge());
System.out.println("================");
Student student2 = ctx.getBean("student", Student.class);
student2.setName("강유");
student2.setAge(55);
System.out.println("student2 이름 : " + student2.getName());
System.out.println("student2 나이 : " + student2.getAge());
System.out.println("================");
System.out.println("student1 이름 : " + student1.getName());
System.out.println("student1 나이 : " + student1.getAge());
if(student1.equals(student2)) {
System.out.println("student1 == student2");
} else {
System.out.println("student1 != student2");
}
ctx.close();
}
}
applicationCTX02.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">
<!-- 디폴트값이 singleton이다. -->
<!-- singleton : 같은 bean을 참조할 때 값 유지 -->
<bean id="student" class="sdlc02.Student" scope="singleton">
<!-- prototype : 같은 bean을 참조할 때 각각 인스턴스를 가진다. -->
<!-- <bean id="student" class="sdlc02.Student" scope="prototype"> -->
<constructor-arg value="혹수돌" />
<constructor-arg value="30" />
</bean>
</beans>
scope = "singleton" 사용 시
scope="prototype" 사용 시
<och05.env>
pom.xml에 하단 코드 추가
<properties>
<!-- Generic properties -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Spring -->
<spring-framework.version>4.2.3.RELEASE</spring-framework.version>
<!-- Hibernate / JPA -->
<hibernate.version>4.2.1.Final</hibernate.version>
<!-- Logging -->
<logback.version>1.0.13</logback.version>
<slf4j.version>1.7.5</slf4j.version>
<!-- Test -->
<junit.version>4.11</junit.version>
</properties>
<dependencies>
<!-- Spring and Transactions -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<dependency>
<!-- Only bundled with java 1.6+ -->
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
[env02]
AdminConnection (class, InitializingBean과 DisposableBean interface 상속)
package env02;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class AdminConnection implements InitializingBean, DisposableBean {
private String adminId;
private String adminPw;
private String sub_adminId;
private String sub_adminPw;
public void destroy() throws Exception {
System.out.println("AdminConnection destroy() 소멸자 소멸 전...");
}
public void afterPropertiesSet() throws Exception {
System.out.println("AdminConnection afterPropertiesSet() 생성자 생성 이후..");
}
public String getAdminId() {
return adminId;
}
public void setAdminId(String adminId) {
this.adminId = adminId;
}
public String getAdminPw() {
return adminPw;
}
public void setAdminPw(String adminPw) {
this.adminPw = adminPw;
}
public String getSub_adminId() {
return sub_adminId;
}
public void setSub_adminId(String sub_adminId) {
this.sub_adminId = sub_adminId;
}
public String getSub_adminPw() {
return sub_adminPw;
}
public void setSub_adminPw(String sub_adminPw) {
this.sub_adminPw = sub_adminPw;
}
}
EnvMainClass02 (class)
package env02;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class EnvMainClass02 {
public static void main(String[] args) {
AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX02.xml");
AdminConnection connection = ctx.getBean("adminConnection", AdminConnection.class);
System.out.println("adminID : " + connection.getAdminId());
System.out.println("adminPW : " + connection.getAdminPw());
System.out.println("sub_adminID : " + connection.getSub_adminId());
System.out.println("sub_adminPW : " + connection.getSub_adminPw());
ctx.close();
}
}
src/main/properties > applicationCTX02.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 http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<!-- xml 세팅보다 더 쉬움 -->
<!-- admin2.properties, sub_admin2.properties에 있는 해당하는 값들을 각각 가져온다. -->
<context:property-placeholder location="classpath:admin2.properties, classpath:sub_admin2.properties"/>
<bean id="adminConnection" class="env02.AdminConnection">
<property name="adminId" value="${admin.id}"></property>
<property name="adminPw" value="${admin.pw}"></property>
<property name="sub_adminId"><value>${sub_admin.id}</value></property>
<property name="sub_adminPw"><value>${sub_admin.pw}</value></property>
</bean>
</beans>
src/main/properties > admin2.properties (file)
admin.id=admin
admin.pw=12345
src/main/properties > sub_admin2.properties (file)
sub_admin.id=sub2
sub_admin.pw=67890
출력 결과
'프로젝트 기반 JAVA 응용 SW개발 : 22.07.19~23.01.20 > Spring' 카테고리의 다른 글
10/24 spring MVC (0) | 2022.11.01 |
---|---|
10/21 id, pw 구별, id, pw 필수조건, MVC list 출력 (0) | 2022.10.31 |
10/20 @RequestParam, DTO, @ModelAttribute (0) | 2022.10.28 |
10/19 Bean, AOP 개념 (0) | 2022.10.26 |
10/17 spring 기본 설정, spring 프레임워크, DI, IOC, property/constructor, ref (0) | 2022.10.20 |