Environment 객체
두 번째 인터페이스는 Environment객체를 사용하기 위함
ps에는 세팅할 정보를 추가할 수 있는데 이때 addLast를 사용하고, 가져올 때는 getProperty사용
예제
<클래스>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
//AdminConnection
package com.javalec.spring_8_1;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
public class AdminConnection implements InitializingBean, EnvironmentAware{
private Environment env;
private String adminId;
private String adminPw;
//객체 생성되기 이전
@Override
public void setEnvironment(Environment environment) {
System.out.println("setEnvironment()");
setEnv(environment);
//env필드에 environment 객체가 들어가게 됨
}
//객체 생성된 후
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("afterPropertiesSet()");
//file에 있는 값을 가져옴
//set에 이 값들을 넣기 때문에 멤버변수들에 이 값들이 설정됨
setAdminId(env.getProperty("admin.id"));
setAdminPw(env.getProperty("admin.pw"));
}
public Environment getEnv() {
return env;
}
public void setEnv(Environment env) {
this.env = env;
}
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;
}
}
//MainClass
package com.javalec.spring_8_1;
import java.io.IOException;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.io.support.ResourcePropertySource;
public class MainClass {
public static void main(String[] args) {
ConfigurableApplicationContext ctx = new GenericXmlApplicationContext();
ConfigurableEnvironment env = ctx.getEnvironment();
//이 객체를 사용해서 외부파일 추가할 것
MutablePropertySources propertySources = env.getPropertySources();
try {
//이 객체에 저 경로의 외부파일을 세팅
propertySources.addLast(new ResourcePropertySource("classpath:admin.properties"));
//AdminConnection 클래스 파일을 사용하지 않고도 외부파일의 값 가져왔음
System.out.println(env.getProperty("admin.id"));
System.out.println(env.getProperty("admin.pw"));
} catch (IOException e) {
e.printStackTrace();
}
GenericXmlApplicationContext gctx = (GenericXmlApplicationContext) ctx;
gctx.load("applicationCTX.xml");
gctx.refresh();
AdminConnection adminConnection = gctx.getBean("adminConnection",AdminConnection.class);
//AdminConnection 파일에서 Environment가 제대로 작동해서 값이 들어와 있음
System.out.println("admin ID : "+adminConnection.getAdminId());
System.out.println("admin PW : "+adminConnection.getAdminPw());
}
}
|
cs |
<xml>
1
2
3
4
5
6
7
|
<?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 class="com.javalec.spring_8_1.AdminConnection" id="adminConnection"></bean>
</beans>
|
cs |
<admin.properties>
admin.id=abcde
admin.pw=12345
프로퍼티 파일을 이용한 설정
xml과 java파일 2가지 형태가 있음
<외부파일>
admin.properties
admin.id=abcde
admin.pw=12345
sub_admin.properties
sub_admin.id=fghij
sub_admin.pw=67890
예제 1 - xml
context를 사용하기 때문에 namespace에서 context 체크하고 사용
외부 파일의 값을 세팅하는 방법은 제이쿼리의 형태로 가져와서 세팅
<클래스>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
//AdminConnection
package com.javalec.spring_8_2;
public class AdminConnection {
private String adminId;
private String adminPw;
private String sub_adminId;
private String sub_adminPw;
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;
}
}
//MainClass
package com.javalec.spring_8_2;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
AbstractApplicationContext ctx = new GenericXmlApplicationContext("applicationCTX.xml");
AdminConnection adminConnection = ctx.getBean("adminConnection",AdminConnection.class);
System.out.println("adminID : "+adminConnection.getAdminId());
System.out.println("adminPW : "+adminConnection.getAdminPw());
System.out.println("sub_adminID : "+adminConnection.getSub_adminId());
System.out.println("sub_adminPW : "+adminConnection.getSub_adminPw());
}
}
|
cs |
<xml>
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
|
<?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-3.1.xsd">
<!-- 외부파일을 참조값으로 사용 가능해짐 -->
<context:property-placeholder
location="classpath:admin.properties, classpath:sub_admin.properties"
/>
<bean class="com.javalec.spring_8_2.AdminConnection" id="adminConnection">
<property name="adminId">
<value>${admin.id}</value>
</property>
<property name="adminPw">
<value>${admin.pw}</value>
</property>
<property name="sub_adminId">
<value>${sub_admin.id}</value>
</property>
<property name="sub_adminPw">
<value>${sub_admin.pw}</value>
</property>
</bean>
</beans>
|
cs |
예제 2 - java
xml의 context 대신 위의 그림에 있는 메서드 사용
자바에서는 값을 세팅할 때 어노테이션 value사용하고 값을 가져오는 방법은 동일하게 제이쿼리 형태
<클래스>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
//AdminConnection
package com.javalec.spring_8_2_2;
public class AdminConnection {
private String adminId;
private String adminPw;
private String sub_adminId;
private String sub_adminPw;
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;
}
}
//ApplicationConfig
package com.javalec.spring_8_2_2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
@Configuration
public class ApplicationConfig {
//value 어노테이션을 사용해서 참조값을 set 역할로 저장
@Value("${admin.id}")
private String adminId;
@Value("${admin.pw}")
private String adminPw;
@Value("${sub_admin.id}")
private String sub_adminId;
@Value("${sub_admin.pw}")
private String sub_adminPw;
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
Resource[] locations = new Resource[2];
//이 path에 외부파일 들어가게 됨
locations[0] = new ClassPathResource("admin.properties");
locations[1] = new ClassPathResource("sub_admin.properties");
//위의 2개의 외부파일 경로에서 값을 가져옴
configurer.setLocations(locations);
return configurer;
}
//AdminConnection에 있는 필드 값으로 외부파일의 값들이 들어가게 됨
@Bean
public AdminConnection adminConnection() {
AdminConnection adminConnection = new AdminConnection();
adminConnection.setAdminId(adminId);
adminConnection.setAdminPw(adminPw);
adminConnection.setSub_adminId(sub_adminId);
adminConnection.setSub_adminPw(sub_adminPw);
return adminConnection;
}
}
//MainClass
package com.javalec.spring_8_2_2;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
AdminConnection adminConnection = ctx.getBean("adminConnection",AdminConnection.class);
System.out.println("adminID : "+adminConnection.getAdminId());
System.out.println("adminPW : "+adminConnection.getAdminPw());
System.out.println("sub_adminID : "+adminConnection.getSub_adminId());
System.out.println("sub_adminPW : "+adminConnection.getSub_adminPw());
}
}
|
cs |
프로파일 속성을 이용한 설정
dev는 개발 서버, run은 운영서버
예제 1 - xml파일로 설정
<클래스>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
//ServerInfo
package com.javalec.spring_8_3_1;
public class ServerInfo {
private String ipNum;
private String portNum;
public String getIpNum() {
return ipNum;
}
public void setIpNum(String ipNum) {
this.ipNum = ipNum;
}
public String getPortNum() {
return portNum;
}
public void setPortNum(String portNum) {
this.portNum = portNum;
}
}
//MainClass
package com.javalec.spring_8_3_1;
import java.util.Scanner;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
String config = "";
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
if (str.equals("dev")) {
config="dev";
}else if (str.equals("run")) {
config="run";
}
scanner.close();
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles(config);
//config에서 프로파일 이름을 보고 알아서 찾아감
ctx.load("applicationCTX_dev.xml", "applicationCTX_run.xml");
ServerInfo info = ctx.getBean("serverInfo",ServerInfo.class);
System.out.println("ip : "+info.getIpNum());
System.out.println("port : "+info.getPortNum());
}
}
|
cs |
<xml>
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
31
|
//applicationCTX_dev
<?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"
profile="dev"
>
<!-- 프로파일 추가함 -->
<bean class="com.javalec.spring_8_3_1.ServerInfo" id="serverInfo">
<property name="ipNum" value="localhost"></property>
<property name="portNum" value="8181"></property>
</bean>
</beans>
//applicationCTX_run
<?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"
profile="run"
>
<!-- 프로파일 추가 -->
<bean class="com.javalec.spring_8_3_1.ServerInfo" id="serverInfo">
<property name="ipNum" value="213.186.229.29"></property>
<property name="portNum" value="80"></property>
</bean>
</beans>
|
cs |
dev를 입력했을 때
run을 입력했을 때
실제로는 이렇게 입력하는 방식으로 사용하지는 않음 - 예제이기 때문에 이러한 형식으로 사용
예제 2 - java 파일로 설정
<클래스>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
//ApplicationConfigDev
package com.javalec.spring_8_3_2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Configuration
@Profile("dev")
public class ApplicationConfigDev {
@Bean
public ServerInfo serverInfo() {
ServerInfo info = new ServerInfo();
info.setIpNum("localhost");
info.setPortNum("8181");
return info;
}
}
//ApplicationConfigRun
package com.javalec.spring_8_3_2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Configuration
@Profile("run")
public class ApplicationConfigRun {
@Bean
public ServerInfo serverInfo() {
ServerInfo info = new ServerInfo();
info.setIpNum("213.186.229.29");
info.setPortNum("80");
return info;
}
}
//MainClass
package com.javalec.spring_8_3_2;
import java.util.Scanner;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MainClass {
public static void main(String[] args) {
String config = "";
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
if (str.equals("dev")) {
config="dev";
}else if (str.equals("run")) {
config="run";
}
scanner.close();
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.getEnvironment().setActiveProfiles(config);
ctx.register(ApplicationConfigDev.class, ApplicationConfigRun.class);
ctx.refresh();
ServerInfo info = ctx.getBean("serverInfo",ServerInfo.class);
System.out.println("ip : "+info.getIpNum());
System.out.println("port : "+info.getPortNum());
}
}
|
cs |
ServerInfo.java는 위의 예제에서 했던거 그대로 사용
이렇게 실행해도 결과는 xml을 사용한 것과 동일하게 출력
문제 1
<클래스>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
//EmpConnection
package com.javalec.spring_ex8_1;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
public class EmpConnection implements EnvironmentAware, InitializingBean{
private Environment env;
private String empId;
private String empPw;
@Override
public void setEnvironment(Environment environment) {
setEnv(environment);
}
@Override
public void afterPropertiesSet() throws Exception {
setEmpId(env.getProperty("emp.id"));
setEmpPw(env.getProperty("emp.pw"));
}
public Environment getEnv() {
return env;
}
public void setEnv(Environment env) {
this.env = env;
}
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getEmpPw() {
return empPw;
}
public void setEmpPw(String empPw) {
this.empPw = empPw;
}
}
//MainClass
package com.javalec.spring_ex8_1;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.io.support.ResourcePropertySource;
public class MainClass {
public static void main(String[] args) {
ConfigurableApplicationContext ctx = new GenericXmlApplicationContext();
ConfigurableEnvironment env = ctx.getEnvironment();
MutablePropertySources propertySources = env.getPropertySources();
try {
propertySources.addLast(new ResourcePropertySource("classpath:oracle.account"));
System.out.println(env.getProperty("emp.id"));
System.out.println(env.getProperty("emp.pw"));
} catch (Exception e) {
e.printStackTrace();
}
GenericXmlApplicationContext gctx = (GenericXmlApplicationContext) ctx;
gctx.load("applicationCTX.xml");
gctx.refresh();
EmpConnection empConnection = gctx.getBean("empConnection",EmpConnection.class);
System.out.println("emp ID : "+empConnection.getEmpId());
System.out.println("emp PW : "+empConnection.getEmpPw());
}
}
|
cs |
<xml>
<외부 파일 - oracle.account>
emp.id=scott
emp.pw=tiger
문제 2
<파일>
//mssql.account
ms_student.id = stu101
ms_student.pw = 1234
//mssql.account
my_student.id = stu201
my_student.pw = 5678
<클래스>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
//DbConnection
package com.javalec.spring_ex8_2;
public class DbConnection {
private String mssqlId;
private String mssqlPw;
private String mysqlId;
private String mysqlPw;
public String getMssqlId() {
return mssqlId;
}
public void setMssqlId(String mssqlId) {
this.mssqlId = mssqlId;
}
public String getMssqlPw() {
return mssqlPw;
}
public void setMssqlPw(String mssqlPw) {
this.mssqlPw = mssqlPw;
}
public String getMysqlId() {
return mysqlId;
}
public void setMysqlId(String mysqlId) {
this.mysqlId = mysqlId;
}
public String getMysqlPw() {
return mysqlPw;
}
public void setMysqlPw(String mysqlPw) {
this.mysqlPw = mysqlPw;
}
}
//MainClass
package com.javalec.spring_ex8_2;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
AbstractApplicationContext ctx = new GenericXmlApplicationContext("applicationCTX.xml");
DbConnection dbConnection = ctx.getBean("dbConnection",DbConnection.class);
System.out.println("mssqlID : "+dbConnection.getMssqlId());
System.out.println("mssqlPW : "+dbConnection.getMssqlPw());
System.out.println("mysqlID : "+dbConnection.getMysqlId());
System.out.println("mysqlPW : "+dbConnection.getMysqlPw());
}
}
|
cs |
<xml>
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
|
//applicationCTX
<?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-3.1.xsd">
<context:property-placeholder
location="classpath:mssql.account,classpath:mysql.account"
/>
<bean class="com.javalec.spring_ex8_2.DbConnection" id="dbConnection">
<property name="mssqlId">
<value>${ms_student.id}</value>
</property>
<property name="mssqlPw">
<value>${ms_student.pw}</value>
</property>
<property name="mysqlId">
<value>${my_student.id}</value>
</property>
<property name="mysqlPw">
<value>${my_student.pw}</value>
</property>
</bean>
</beans>
|
cs |
문제 3
<클래스>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
//DbInfo
package com.javalec.spring_ex8_3;
public class DbInfo {
private String driver;
private String url;
private String user;
private String password;
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
//MainClass
package com.javalec.spring_ex8_3;
import java.util.Scanner;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String config = "";
String str = scanner.next();
if (str.equals("oracle")) {
config="oracle";
}else if (str.equals("mysql")) {
config="mysql";
}
scanner.close();
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles(config);
ctx.load("oracleCTX.xml","mysqlCTX.xml");
DbInfo dbInfo = ctx.getBean("dbInfo",DbInfo.class);
System.out.println("driver : "+dbInfo.getDriver());
System.out.println("url : "+dbInfo.getUrl());
System.out.println("user : "+dbInfo.getUser());
System.out.println("pwd : "+dbInfo.getPassword());
}
}
|
cs |
<xml>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
//oracleCTX
<?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"
profile="oracle"
>
<bean class="com.javalec.spring_ex8_3.DbInfo" id="dbInfo">
<property name="driver">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:this:@localhost:1521:ORCL</value>
</property>
<property name="user">
<value>scott</value>
</property>
<property name="password">
<value>tiger</value>
</property>
</bean>
</beans>
//mysqlCTX
<?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"
profile="mysql"
>
<bean class="com.javalec.spring_ex8_3.DbInfo" id="dbInfo">
<property name="driver">
<value>com.mysql.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/JSPDB</value>
</property>
<property name="user">
<value>root</value>
</property>
<property name="password">
<value>mysql</value>
</property>
</bean>
</beans>
|
cs |
문제 4
<클래스>
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
//JdbcDriver
package com.javalec.spring_ex8_4;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
public class JdbcDriver implements EnvironmentAware, InitializingBean{
private Environment env;
private String oracleJdbcDriver;
private String mysqlJdbcDriver;
@Override
public void setEnvironment(Environment environment) {
setEnv(environment);
}
@Override
public void afterPropertiesSet() throws Exception {
// setOracleJdbcDriver("oracle");
// setMysqlJdbcDriver("mysql");
setOracleJdbcDriver("oracle.jdbc.driver.OracleDriver");
setMysqlJdbcDriver("com.mysql.jdbc.Driver");
}
public Environment getEnv() {
return env;
}
public void setEnv(Environment env) {
this.env = env;
}
public String getOracleJdbcDriver() {
return oracleJdbcDriver;
}
public void setOracleJdbcDriver(String oracleJdbcDriver) {
this.oracleJdbcDriver = oracleJdbcDriver;
}
public String getMysqlJdbcDriver() {
return mysqlJdbcDriver;
}
public void setMysqlJdbcDriver(String mysqlJdbcDriver) {
this.mysqlJdbcDriver = mysqlJdbcDriver;
}
}
//MainClass
package com.javalec.spring_ex8_4;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.io.support.ResourcePropertySource;
public class MainClass {
public static void main(String[] args) {
ConfigurableApplicationContext ctx = new GenericXmlApplicationContext();
ConfigurableEnvironment env = ctx.getEnvironment();
MutablePropertySources propertySources = env.getPropertySources();
try {
propertySources.addLast(new ResourcePropertySource("classpath:jdbc.driver"));
System.out.println(env.getProperty("oracle"));
System.out.println(env.getProperty("mysql"));
} catch (Exception e) {
e.printStackTrace();
}
GenericXmlApplicationContext gctx = (GenericXmlApplicationContext) ctx;
gctx.load("applicationCTX.xml");
gctx.refresh();
JdbcDriver jdbcDriver = gctx.getBean("jdbcDriver",JdbcDriver.class);
System.out.println("OracleJdbcDriver : "+jdbcDriver.getOracleJdbcDriver());
System.out.println("MySqlJdbcDriver : "+jdbcDriver.getMysqlJdbcDriver());
}
}
|
cs |
<xml>
'학원 > 스프링-학원' 카테고리의 다른 글
MVC 기초 (0) | 2022.05.16 |
---|---|
AOP(Aspect Oriented Programming) (0) | 2022.05.13 |
생명주기(LIFE CYCLE)와 범위(SCOPE) (0) | 2022.05.11 |
DI 설정 방법 (0) | 2022.05.10 |
DI - 2 (0) | 2022.05.10 |