Spring Boot
Apžvalga
Spring Boot yra Java karkasas, palengvinantis savarankiškų, produkcinės kokybės aplikacijų kūrimą. Jis suteikia automatinę konfigūraciją, įdėtuosius serverius ir konkrečią požiūrį į REST API ir žiniatinklio aplikacijų kūrimą.
Greitas startas
Sukurkite repozitoriją iš šablono
Valdymo skydelyje pereikite į skirtuką Tools & Deployment. Spauskite mygtuką "New Repository", išskleidžiamame sąraše pasirinkite Spring Boot šabloną, įveskite repozitorijos pavadinimą ir subdomeną, tada spauskite "Create Repository".
Klonuokite savo repozitoriją
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Sukonfigūruokite duomenų bazę
Atnaujinkite src/main/resources/application.properties su valdymo skydelio prisijungimo duomenimis:
spring.datasource.url=jdbc:mysql://db.<session-domain>:3306/<username>
spring.datasource.username=<username>
spring.datasource.password=<password>
Sukompiliuokite ir paleiskite
./mvnw spring-boot:run
Pagal numatytuosius nustatymus serveris veikia adresu http://localhost:8080.
Įkelkite savo pakeitimus
git add .
git commit -m "Initial setup"
git push origin main
Vietinis kūrimas su Docker
Jei vietoje neturite įdiegtos Java, galite naudoti Docker savo Spring Boot aplikacijai sukompiliuoti ir paleisti.
Komandų vykdymas su Docker
# Sukompiliuoti projektą
docker run --rm -v $(pwd):/app -w /app maven:3-eclipse-temurin-21 ./mvnw clean package -DskipTests
# Paleisti aplikaciją
docker run --rm -v $(pwd):/app -w /app -p 8080:8080 eclipse-temurin:21 java -jar target/*.jar
Duomenų bazės konfigūracija
NStrim platforma jums suteikia MySQL/MariaDB duomenų bazę. Sukonfigūruokite savo application.properties failą su teisingais prisijungimo duomenimis.
Pilna konfigūracija
spring.datasource.url=jdbc:mysql://db.<session-domain>:3306/<username>
spring.datasource.username=<username>
spring.datasource.password=<password>
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
student01). Tikslioms reikšmėms patikrinkite valdymo skydelio prisijungimo duomenų skiltį.Projekto struktūra
├── src/
│ └── main/
│ ├── java/com/example/
│ │ ├── Application.java # Spring Boot įėjimo taškas
│ │ ├── controllers/ # REST valdikliai
│ │ ├── models/ # JPA esybės
│ │ ├── repositories/ # Spring Data repozitorijos
│ │ └── services/ # Verslo logika
│ └── resources/
│ ├── application.properties # Konfigūracija
│ ├── templates/ # Thymeleaf šablonai
│ └── static/ # CSS, JS, paveikslėliai
├── pom.xml # Maven priklausomybės
└── Dockerfile # Docker konfigūracija
Įprastos užduotys
REST valdiklio kūrimas
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping
public List<User> getAll() {
return userRepository.findAll();
}
@PostMapping
public User create(@RequestBody User user) {
return userRepository.save(user);
}
}
JPA esybės kūrimas
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getters and setters
}
Repozitorijos kūrimas
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
}
Naudingos komandos
./mvnw spring-boot:run
Paleisti kūrimo serverį
./mvnw clean package
Sukompiliuoti projektą
./mvnw test
Vykdyti testus
./mvnw dependency:tree
Rodyti priklausomybių medį
Trikčių šalinimas
Communications link failure / Connection refused
Priežastis: Duomenų bazės serveris yra neteisingas arba nepasiekiamas.
Sprendimas: Patikrinkite, ar spring.datasource.url sutampa su valdymo skydelio duomenų bazės serveriu.
Access denied for user
Priežastis: Neteisingas vartotojo vardas arba slaptažodis.
Sprendimas: Du kartus patikrinkite, ar spring.datasource.username ir spring.datasource.password tiksliai atitinka valdymo skydelio prisijungimo duomenis.
Prievadas 8080 jau naudojamas
Sprendimas: Pridėkite server.port=8081 į application.properties arba sustabdykite kitą procesą.
Whitelabel Error Page (404)
Priežastis: Joks valdiklis nesusietas su prašomu URL.
Sprendimas: Įsitikinkite, kad jūsų valdiklis turi teisingą @RequestMapping anotaciją ir aplikacija skenuoja teisingus paketus.