00. properties란?
Spring에서의 "properties"는 주로 설정 정보를 담고 있는 외부 파일로 사용됩니다. 이 파일은 일반적으로 .properties 확장자를 가지며, 키-값 쌍으로 구성되어 있습니다. 이러한 외부 properties 파일은 Spring 애플리케이션의 설정을 관리하고, 런타임 시에 애플리케이션의 동작을 조정하는 데 사용됩니다.
Spring에서 properties 파일을 사용하는 주요 목적은 다음과 같습니다:
1.환경 변수 설정: 데이터베이스 연결 정보, 서버 URL, 포트 번호 등과 같은 환경 변수를 외부 파일에 저장하여 유지 관리합니다.
2.애플리케이션 설정: 로그 레벨, 메시지 리소스 경로, 캐시 크기 등과 같은 애플리케이션 설정을 외부 파일에 저장하여 관리합니다.
3.국제화 및 로컬라이제이션: 다국어 지원을 위해 메시지 번들을 properties 파일로 저장하고 로드하여 사용합니다.
4.빈 설정: Spring 빈의 속성을 외부 properties 파일로부터 주입하여 런타임 시에 빈을 구성합니다.
(출처-ChatGPT)
01. Bean Externalization or Reading Properties
가. 개념: 외부에 저장된 설정파일을 이용하기 때문에 변경이 발생해도 재컴파일X
나. 구현 방법
다. 구현 예시
02. BeanDefinitionStoreException
가. 구현 방법 (전체구성)
사용
pakages : com.kitri.spring.Properties
class : MyDao.java
Properties.java
File : database.properties
xml : Properties.xml
나. 구현 코드(전체코드)
다. 실행결과
03. 응용버전(과제)
가. 구현 방법
나. 구현 방법 (전체구성)
사용
pakages : com.kitri.spring.Properties.ex1
class : MyDao.java
Properties.java
File : database.properties2
xml : Properties.ex1.xml
다. 구현
- MaDao.java
package com.kitri.spring.Properties.ex1;
public class MyDao {
private String url;
private String userName;
private String Password;
public MyDao() {}
public MyDao(String url, String userName, String Password) {
this.url = url;
this.userName = userName;
this.Password = Password;
}
@Override
public String toString() {
return "URL: " + url + ", userName: " + userName + ", Password: " + Password;
}
}
이 클래스는 데이터베이스 연결 정보를 관리하는 데 사용될 수 있습니다. 객체를 생성할 때 데이터베이스의 URL, 사용자 이름 및 비밀번호를 설정하고, toString() 메서드를 사용하여 연결 정보를 문자열로 출력할 수 있습니다.
- Properties .java
package com.kitri.spring.Properties.ex1;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Properties {
public static void main(String[] args) {
// 스프링 컨테이너 생성
ClassPathXmlApplicationContext ctx =
new ClassPathXmlApplicationContext(
"classpath:Properties.ex1.xml");
// 빈 객체 사용
MyDao myDao = (MyDao)ctx.getBean("mydao");
System.out.println(myDao);
// 스프링 컨테이너 종료
ctx.close();
}
}
이 코드는 스프링 애플리케이션 컨텍스트를 생성하고 XML 파일을 사용하여 설정된 빈 객체를 가져와서 사용하는 것입니다. 빈 객체는 처음에 만들어놓은 Dao.java 클래스가 실행되어 출력됩니다.
- Properties.ex1.xml
<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"
xmlns:c="http://www.springframework.org/schema/c"
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.xsd">
<context:annotation-config />
<!-- 외부 properties 파일로부터 설정 값 로드 -->
<context:property-placeholder location="classpath:database.properties2" />
<!-- MyDao 빈 정의 -->
<bean name="mydao" class="com.kitri.spring.Properties.ex1.MyDao"
c:url="${url}"
c:userName="${userName}"
c:Password="${Password}" />
</beans>
이 설정 파일은 외부 properties 파일을 사용하여 MyDao 빈을 정의하고, 해당 빈에 필요한 설정 값을 주입하는 데 사용됩니다.
- database.properties2.File
url=xyz
#The default port
dbPort=1521
#user Name/Password
userName=test
Password=test
Spring 애플리케이션은 이러한 properties 파일을 사용하여 데이터베이스 연결 등의 설정 정보를 외부에서 로드하고, 애플리케이션 컨텍스트에서 이 정보를 사용하여 빈(bean)을 구성합니다.
라. 실행결과
자 이제 실행결과를 똿!! 해서 결과를 확인해 본 결과 오잉..? 분명 database.properties2.File 에서 userName을 test 로 설정했는데 다른 결과값이 출려되었다... 이럴수가....오류를 분석해보자 (흑흑..)
+ 수정 및 새롭게 알아낸 사실~~~
확인한결과 cmd에서 echo 명령어를 이용하여 userName의 커맨드값을 확인해본결과 다른 값이 저장되어있었다.!!! 그래서 아무래도 userName이라는 문자열을 사용하면 출력되었던것같다.!!! (이전실습과정에서 이렇게 된것같다 하하;;)

호다닥 문자열이름을 Name으로 바꾸고 다시 출력해본결과..
정상적으로 결과값이출력되었다.. 새로운 사실을 알게되어서 좋았던 실습이다

'Spring' 카테고리의 다른 글
06. Spring - ★JDBCTemplate 연동★ (2) | 2024.04.23 |
---|---|
05. Spring - Interface 주입 (2) | 2024.04.22 |
04. Spring- Auto Wiring(@Autowiring, @Qualifier) (3) | 2024.04.19 |
02. Spring- 스프링코어기본 - 세터주입(Maven Project) (0) | 2024.04.17 |
01. Spring- 스프링 웹 개발 환경구성 (2) | 2024.04.17 |