■概要
作成する機能の概要は以下の通り。
- service-context.xmlに値を設定する
- 取得した値をREST機能で返却する
JavaとSpring Bootのバージョンは以下の通り
項目 | バージョン |
---|---|
JAVA | 17 |
Spring Boot | 3.3.3 |
■設定値と出力値
service-context.xmlに設定する項目とREST機能で出力する想定の値を以下に示す。
・service-context.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.xsd">
<!-- Beanの定義 -->
<bean id="GetDataFromXml#1" class="com.example.demo.get.data.bean.GetDataBean">
<property name="appVersion" value="1.0.1" />
<property name="element1" value="huga1" />
<property name="element2" value="huga2" />
<property name="element3_1" value="huga3-1" />
<property name="element3_2" value="huga3-2" />
</bean>
</beans>
・出力値(「http://localhost:8080/rest/get/xmldata」アクセス時)
{"element1":"huga1","element2":"huga2","element3-1":"huga3-1","element3-2":"huga3-2","version":"1.0.1"}
■モジュールの階層構造
作成するモジュールの階層構造を以下に示す。
■クラス図
今回作成するモジュールのクラス図を以下に示す。
■サンプルコード
・GetXmlController.java
package com.example.demo.get.data.controller;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.get.data.service.RestService;
@RestController
public class GetXmlController {
@Autowired
RestService restService;
// xmlデータを取得()
@GetMapping("/rest/get/xmldata")
public Map<String, String> getXmlDatas() {
return restService.getDataFromXMList();
}
}
・RestService.java
package com.example.demo.get.data.service;
import java.util.Map;
public interface RestService {
// xmlから取得
public Map<String, String> getDataFromXMList();
}
・RestServiceImpl.java
package com.example.demo.get.data.service;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.demo.get.data.util.GetDataFromXml;
@Service("RestServiceImpl")
public class RestServiceImpl implements RestService {
@Autowired
GetDataFromXml getDataFromXml;
@Override
public Map<String, String> getDataFromXMList() {
return getDataFromXml.getDatas();
}
}
・GetDataFromXml.java
package com.example.demo.get.data.util;
import java.util.Map;
import java.util.TreeMap;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
import com.example.demo.get.data.bean.GetDataBean;
@Component
public class GetDataFromXml {
public Map<String, String> getDatas() {
// context.xmlのロード
ApplicationContext context = new ClassPathXmlApplicationContext("service-context.xml");
// Beanの取得
GetDataBean getDataBean = (GetDataBean) context.getBean("GetDataFromXml#1");
// 返却用リスト
final Map<String, String> datas = new TreeMap<String, String>();
// xmlの値を追加
datas.put("version", getDataBean.getAppVersion());
datas.put("element1", getDataBean.getElement1());
datas.put("element2", getDataBean.getElement2());
datas.put("element3-1", getDataBean.getElement3_1());
datas.put("element3-2", getDataBean.getElement3_2());
((ClassPathXmlApplicationContext) context).close();
return datas;
}
}
・GetDataBean.java
package com.example.demo.get.data.bean;
public class GetDataBean {
private String appVersion;
private String element1;
private String element2;
private String element3_1;
private String element3_2;
public String getAppVersion() {
return appVersion;
}
public void setAppVersion(String appVersion) {
this.appVersion = appVersion;
}
public String getElement1() {
return element1;
}
public void setElement1(String element1) {
this.element1 = element1;
}
public String getElement2() {
return element2;
}
public void setElement2(String element2) {
this.element2 = element2;
}
public String getElement3_1() {
return element3_1;
}
public void setElement3_1(String element3_1) {
this.element3_1 = element3_1;
}
public String getElement3_2() {
return element3_2;
}
public void setElement3_2(String element3_2) {
this.element3_2 = element3_2;
}
}