Spring Boot
Overzicht
Spring Boot is een Java-framework dat het eenvoudig maakt om zelfstandige applicaties van productiekwaliteit te maken. Het biedt automatische configuratie, embedded servers en een opiniegestuurde aanpak voor het bouwen van REST API's en webapplicaties.
Snelstart
Repository aanmaken vanuit sjabloon
Ga in je dashboard naar het tabblad Tools & Deployment. Klik op de knop "New Repository", selecteer het Spring Boot-sjabloon uit het dropdownmenu, voer een repository-naam en subdomein in en klik vervolgens op "Create Repository".
Je repository klonen
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Database configureren
Werk src/main/resources/application.properties bij met je dashboard-inloggegevens:
spring.datasource.url=jdbc:mysql://db.<session-domain>:3306/<username>
spring.datasource.username=<username>
spring.datasource.password=<password>
Bouwen en uitvoeren
./mvnw spring-boot:run
De server draait standaard op http://localhost:8080.
Je wijzigingen pushen
git add .
git commit -m "Initial setup"
git push origin main
Lokale ontwikkeling met Docker
Als je geen Java lokaal hebt geïnstalleerd, kun je Docker gebruiken om je Spring Boot-applicatie te bouwen en uit te voeren.
Commando's uitvoeren met Docker
# Build the project
docker run --rm -v $(pwd):/app -w /app maven:3-eclipse-temurin-21 ./mvnw clean package -DskipTests
# Run the application
docker run --rm -v $(pwd):/app -w /app -p 8080:8080 eclipse-temurin:21 java -jar target/*.jar
Databaseconfiguratie
Het NStrim-platform biedt je een MySQL/MariaDB-database. Configureer je application.properties-bestand met de juiste inloggegevens.
Volledige configuratie
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). Controleer het inloggegevens-gedeelte van je dashboard voor de exacte waarden.Projectstructuur
├── src/
│ └── main/
│ ├── java/com/example/
│ │ ├── Application.java # Spring Boot-startpunt
│ │ ├── controllers/ # REST-controllers
│ │ ├── models/ # JPA-entiteiten
│ │ ├── repositories/ # Spring Data-repositories
│ │ └── services/ # Bedrijfslogica
│ └── resources/
│ ├── application.properties # Configuratie
│ ├── templates/ # Thymeleaf-templates
│ └── static/ # CSS, JS, afbeeldingen
├── pom.xml # Maven-afhankelijkheden
└── Dockerfile # Docker-configuratie
Veelvoorkomende taken
Een REST-controller aanmaken
@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);
}
}
Een JPA-entiteit aanmaken
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getters and setters
}
Een repository aanmaken
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
}
Handige commando's
./mvnw spring-boot:run
Ontwikkelingsserver starten
./mvnw clean package
Het project bouwen
./mvnw test
Tests uitvoeren
./mvnw dependency:tree
Afhankelijkhedenboom tonen
Probleemoplossing
Communications link failure / Connection refused
Oorzaak: Database-host is onjuist of niet bereikbaar.
Oplossing: Controleer of spring.datasource.url overeenkomt met de database-host uit je dashboard.
Access denied for user
Oorzaak: Verkeerde gebruikersnaam of wachtwoord.
Oplossing: Controleer of spring.datasource.username en spring.datasource.password exact overeenkomen met je dashboard-inloggegevens.
Port 8080 already in use
Oplossing: Voeg server.port=8081 toe aan application.properties of stop het andere proces.
Whitelabel Error Page (404)
Oorzaak: Er is geen controller toegewezen aan de aangevraagde URL.
Oplossing: Zorg ervoor dat je controller de juiste @RequestMapping-annotatie heeft en dat de applicatie de juiste packages scant.