Springの環境構築とHello World(Mac編)

はじめに

MacPCを手に入れたのでSpringの環境構築を1から試してみました。

✅参考

Spring解体新書

Pleiades Java 11 標準搭載と Eclipse コードネーム終焉

環境構築

①Pleiades All in One ダウンロード
http://mergedoc.osdn.jp/

Full versionをインストール※1.3GBあるので注意!!

②Eclipseを起動して新規作成

新規>Springスタータ・プロジェクト>(パッケージ選択)>完了

Hello Worldしてみる

src/main/java/com/example/demo/tryspring/HelloController.javaを作成

package com.example.demo.tryspring;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {
  @GetMapping("/hello")
  public String getHello() {
    return "hello";
  }
}

上記のように@ControllerをつけることでDIでコントローラが利用できるようになる。

@GetMappingをメソッドにつけるとHTTPリクエストのGETメソッドを処理できる。
※htmlファイルはresources/templatesフォルダを参照する

😇ディレクトリ階層深すぎじゃない??って感じですね笑

src/main/resources/templates/hello.htmlを作成

<!DOCTYPE html>
<html xmlns:th="htt@://www.thymeleaf.org">
<head>
  <meta charset="UTF-8"></meta>
  <title>Hello World</title>
</head>
<body>
  <h1>Hello World</h1>
</body>
</html>

実行

プロジェクト右クリック>実行>SpringBootアプリケーション

http://localhost:8080/helloにアクセス

値を渡す処理

htmlに追記

<form method="post" action="/hello">
好きな文字を入力:
<input type="text" name="text1" th:value="${text1_value}">
<inputtype="submit" value="クリック">
</form>

th:valueを使うことでコントローラークラスに値を渡すことが可能◎
※タイムリーフの属性

コントローラへの追記

@PostMapping("/hello")
public String postRequest(@RequestParam("text1")String str,Model model) {
  model.addAttribute("sample",str);
  return "helloResponse";
}

@PostMappingをメソッドにつけるとHTTPリクエストのPOSTメソッドを処理。

@RequestParamで画面からの入力を受付。引数にhtmlのname属性を指定。

helloResponse.htmlの作成

<body>
  <h1>HelloResponse</h1>
  <p th:text="${sample}"></p>
</body>

th:text属性にmodel.addAttributeで登録したキーを指定してコントローラーから値を受け取る。

DB接続

コントローラ→サービス(Model)→リポジトリ(DBへのCRUD操作※Model)の流れ

application/propertiesを編集

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasouce.username=sa
spring.datasouce.password=
spring.datasource.sql-script-encoding=UTF-8
spring.h2.console.enabled=true
spring.datasource.initialize=true
spring.datasource.schema=classpath:schema.sql
spring.datasource.data=classpath:data.sql

※H2はサーバー起動ごとにデータがリセットされるらしい。

schema.sqlの作成

CREATE TABLE IF NOT EXISTS employee (
employee_idINT PRIMARY KEY,
employee_nameVARCHAR(50),
ageINT
)

data.sqlの作成

INSERT INTO employee(employee_id, employee_name,age) VALUES(1,"山田太郎",30);

HelloRepository.javaの作成

package com.example.demo.tryspring;

import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class HelloRepository {

@Autowired
private JdbcTemplate jdbcTemplate;
public Map<String, Object> findOne(int id){
String query = "SELECT "
+ "employee_id,"
+ "employee_name,"
+ "age "
+ "FROM employee "
+ "WHERE employee_id=?";
Map<String, Object> employee = jdbcTemplate.queryForMap(query, id);
return employee;
}
}

※インデントみづらくてすみません💦ちょっとここまででステイします。

おわりに

アノテーションをつけることでDIを機能させていることがわかった。

なんとなくSpringの仕組みの触りだけでも理解できたのでよしとしよう。

DB接続まで挑戦してみようと思ったが、他の言語の学習に時間を使いたいと思ってしまったのでここまでで。。。笑

コメントを残す