web-dev-qa-db-fra.com

Que fait exactement spring-boot-starter-parent dans un fichier pom?

Je développe un projet qui n'est pas une botte de printemps, mais aussi un mvc de printemps. Je veux dire que je n'ai pas cette classe par exemple dans mon projet:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {           
      SpringApplication.run(Application.class, args);
    }

J'ai ces trois classes pour le fichier de configuration de spring mvc:

@Import(WebSocketConfig.class)
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "......")

public class MainConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/Content/**")
                .addResourceLocations("/Content/");
        registry.addResourceHandler("/Scripts/**")
                .addResourceLocations("/Scripts/");


    }

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver
                = new InternalResourceViewResolver();
        viewResolver.setPrefix("/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

}

Seconde:

public class MainInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    public static HashMap<String, String> response_code = new HashMap<String, String>();


    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { MainConfiguration.class,
        WebSocketConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        super.onStartup(servletContext);
        Security.addProvider(new BouncyCastleProvider());
        servletContext.addListener(new MainContextListener());
        System.out.println("MainInitializer.onStartup()");
}}

Troisième,

public class MainContextListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("Context Initialized");
        Security.addProvider(new BouncyCastleProvider());
    }

    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("Shutting down!");
    }
}

Il y a un contrôleur et un fichier jsp et je l'ai configuré pour fonctionner sur le serveur Web Tomcat. Ce qui est étrange pour moi, c'est que lorsque j'ajoute cet extrait de code à mon pom, index.jsp apparaît dans le navigateur exactement, mais lorsque je le supprime. , cela donne 404 URL non trouvée pour mon contrôleur. pourquoi mon projet n'est-il pas un projet de démarrage du printemps a-t-il besoin d'un parent de démarrage du démarrage du printemps? Je pensais que le code ci-dessous est lié à la botte de printemps et puisque mon projet n’est pas une botte de printemps mais une mvc de printemps, n’en a pas besoin. mais il y a un problème sans que ce code soit ajouté dans pom:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>
6
user5621266

Il fournit un emplacement pour la configuration commune pour CHILD POMs. par exemple.

Dependencies & Properties

Pour e.g. Voici la configuration POM parent 1.4.2.RELEASEspring-boot-dependencies qui est le parent de spring-boot-starter-parent

<properties>
    <activemq.version>5.13.4</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine.version>1.9.44</appengine.version>
    <artemis.version>1.3.0</artemis.version>
    <aspectj.version>1.8.9</aspectj.version>
    <assertj.version>2.5.0</assertj.version>
    <atomikos.version>3.9.3</atomikos.version>
    <bitronix.version>2.1.4</bitronix.version>
    <caffeine.version>2.3.4</caffeine.version>

propriétés communes pour child POMs

<dependencyManagement>
    <dependencies>
        <!-- Spring Boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
            <version>1.4.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
            <type>test-jar</type>
            <version>1.4.2.RELEASE</version>
        </dependency>
        <dependency>

dépendances communes pour les enfants

2
Mr.Arjun

Spring Boot fournit un certain nombre de «démarreurs» qui vous permettent d’ajouter des fichiers JAR à votre chemin de classe. Par ex. Spring-Boot-Starter-Security, Spring-Boot-Starter-Web, etc. Le "Spring-Boot-Starter-Parent" est un démarreur spécial qui fournit des valeurs par défaut utiles de Maven, c.-à-d. qu'il ajoute automatiquement tous les bocaux requis, etc. Il fournit également une section de gestion des dépendances afin que vous puissiez omettre les balises de version pour les dépendances que vous utilisez dans pom.xml. Par ex. Supposons que vous souhaitiez créer une application Web avec Spring Boot et que vous deviez ajouter ce qui suit.

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

Notez maintenant que cette balise est omise. Donc, finalement, le "parent-démarreur-printemps-démarrage" ajoute tellement de choses par défaut que nous n’avons pas à nous soucier de ces choses.

1
Chirag

Si vous pouvez fournir plus d'informations, comme l'intégralité de votre pompon, nous pouvons chercher à comprendre et à vous aider davantage.

D'autre part, le parent parent pom spring-boot-starter-parent contient les dépendances complètes (mvc, cache, jpa) et les propriétés communes afin de maintenir les versions de dépendances dans une cohérence cohérente, à utiliser dans votre projet ou/et sous-modules.

En principe, vous pouvez ajouter des entrées dans votre fichier pom.xml en fonction de vos besoins (Web, jpa, batch, etc.). Pour votre exemple, vous pouvez simplement ajouter un démarreur mvc à votre fichier pom.xml sans ajouter d'autres dépendances. pom.xml peut juste être comme ça:

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<properties>
    <Java.version>1.8</Java.version>
</properties>


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
0
Hatim