Architektur für Spring Boot Projekt

RezaScript

Bekanntes Mitglied
Ich möchte gerne die Architektur von Spring Boot verstehen.

Ich habe in meinem Projekt folgende Packages erstellt:
  • controller
  • service
  • dao
Nun habe ich aber eine Konfigurationsdatei erstellt, die zu keinem der genannten Packages passt. So sieht der Inhalt aus:

Java:
package ch.concertopro.featureanalyser.service;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class AuthService extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                .antMatcher("/**").authorizeRequests()
                .antMatchers("/").permitAll()
                .anyRequest().authenticated()
                .and()
                .oauth2Login();
    }
}

Gibt es für so etwas eine Konvention?
 
Okay, also unter "Architektur von Spring Boot" hätte ich jetzt was anderes verstanden.
Du fragst ja eher nach "Java Packagenamen Konvention für Spring Boot Projekte".
Also da habe ich schon gesehen, wie Leute genau diese WebSecurityConfigurerAdapter Config Klasse in ein /security Package gepackt haben oder in ein /web Package oder in ein /configs Package, oder... oder...
Ist eigentlich komplett egal. Was man im Kopf behalten könnte ist, dass diese Klasse ja die Security von einkommenden Requests kontrolliert/steuert.
 
Ist eigentlich komplett egal.
Dazu ergänzend: Für ein Team größer 1 Mann sollten alle beteiligten das gleiche Verständnis der Package Namen haben. Also, der eine es nicht in config packt und der andere dann in security danach sucht.

PS: Das gilt für alle Packages, nicht nur für das dieser eine Klasse.
PPS: Ist es in Spring Boot IMHO repository und nicht dao.
 
PPS: Ist es in Spring Boot IMHO repository und nicht dao.
Es können auch beide eingesetzt werden. So habe ich es zumindest in meinem letzten Projekt gemacht (ohne Spring Boot).
Repository habe ich nur auf eine einzige Tabelle festgelegt. D.h. wenn die Tabelle Users hiess, hiess die Datei UsersRepository. Repository war für mich auch nur READ ONLY. D.h. die einzigen Methoden, die ich dafür eingesetzt habe, waren: find(), findOneBy(), findAll, findBy()

In DAO habe ich dann die Objekte aus UserRepository, aber auch von anderen Repositories, eingesetzt. Somit war Repository beschränkt, während DAO flexibel war.
 
Somit war Repository beschränkt, während DAO flexibel war.
Naja, genauso könnte man argumentieren, dass es ein UserDAO u.s.w. gibt. Es ist ja nicht festgelegt, dass es im Package "repository" nur genau ein einziges Repository geben darf. Genauso, wie es im Package "dao" nicht nur ein DAO geben muss.

Für mich ist ein Repository auch nicht zwangsweise readonly, das wäre eher eine Query.

Aber vielleicht habe ich dich auch falsch verstanden.
 
Ich finde @httpdigest hat es hier recht gut erklärt.
 

Zurück
Oben