Commit 7e8da50d by Patryk Czarnik

Przykład ze wstrzukiwaniem przez knstruktor

parent 3326f45f
package com.example.demo;
import java.util.stream.Collectors;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class WstrzykiwaniePrzezKonstruktor {
private LogikaKalkulatora logikaKalkulatora;
// Jeśli jedynym dostępnym konstruktorem jest taki, który wymaga parametrów,
// Spring wywoła własnie ten konstruktor i przekaże wymagane parametry, o ile uda mu się takie obiekty znaleźć.
// To też jest forma wstrzykiwania zależności.
// Zauważmy, że działa bez żadnej adnotacji przed tym konstruktorem.
public WstrzykiwaniePrzezKonstruktor(LogikaKalkulatora logikaKalkulatora) {
this.logikaKalkulatora = logikaKalkulatora;
}
@GetMapping(path="/liczenie", produces="text/plain")
@ResponseBody
public String liczenie(Long liczba1, Long liczba2, String operacja) {
return String.valueOf(logikaKalkulatora.oblicz(operacja, liczba1, liczba2));
}
@GetMapping(path="/historia.txt", produces="text/plain")
@ResponseBody
public String dajHistorie() {
return logikaKalkulatora.getHistoriaDzialan()
.stream()
.map(s -> " → " + s)
.collect(Collectors.joining("\n"));
}
}
......@@ -39,6 +39,8 @@
<li><a th:href="@{/kalkulator}">Kalkulator</a> (formlularz)</li>
<li><a th:href="@{/kalkulator/historia}">Historia Kalkulatora HTML</a></li>
<li><a th:href="@{/historia.json}">Historia Kalkulatora JSON</a></li>
<li><a th:href="@{/historia.txt}">Historia tekstowo</a></li>
<li><a th:href="@{liczenie(liczba1=211,liczba2=303,operacja='*')}">Liczenie bezpośrednie</a> w parametrami URL</li>
</ul>
</body>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment