Springboot не работает, кроме случаев, когда напечатан привет - PullRequest
0 голосов
/ 12 ноября 2018

Я создал очень простой проект SpringBoot, используя мой groupId и artifactId. Похоже, что он не хочет начинать, и некоторые сопоставления отсутствуют. Но когда я использую те же имена пакетов и имена классов, что и учебник по SPring Boot, который находится на сайте spring.io, он работает.

Мой POM выглядит следующим образом:

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.my.spring</groupId>
<artifactId>firstspringboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<url>http://maven.apache.org</url>

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent -->

<parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>2.0.3.RELEASE</version>

</parent>

<properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

<dependencies>

    <dependency>

        <groupId>junit</groupId>

        <artifactId>junit</artifactId>

        <scope>test</scope>

    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

</dependencies>

Мой ресурс 'Приветствие'

package com.my.spring.firstspringboot.entities;

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class Greeting {

    private String id;
    private String firstName;
    private String lastName;

    public Greeting() {

    }
    public Greeting(String firstName, String lastName) throws NoSuchAlgorithmException {
        this.setFirstName(firstName);
        this.setLastName(lastName);
        this.setId(new StringBuilder().append(SecureRandom.getInstance("SHA1PRNG").nextInt()).append("_").append(System.currentTimeMillis()).toString());
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Override
    public String toString() {
        return new StringBuilder().append("{\n\"name\":\"").append(this.firstName).append(" ").append(this.lastName).append("\"\n").append(",").append("{\n\"id\":\"").append(this.id).append("\"").toString();
    }
}

И его контроллер:

package com.my.spring.firstspringboot.controllers;

import java.security.NoSuchAlgorithmException;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.my.spring.firstspringboot.entities.Greeting;

@RestController
public class GreetingController {

    @RequestMapping("/")
    public String home() {
        return "Welcome!";
    }

    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(name="name",defaultValue="John") String name) throws NoSuchAlgorithmException {
        return new Greeting(name,name);
    }

}

И главное приложение

package com.my.spring.firstspringboot.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App

{

    public static void main(String[] args)

    {

        SpringApplication.run(App.class, args);

    }

}

Есть ли что-то еще, что мне нужно сделать здесь? Я думал, что это просто загрузка и автоматическая настройка по умолчанию.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Согласно документации (спасибо @JBNizet за указание на это), мне нужно было сохранить основное приложение под именем пакета com.my.spring.firstspringboot

Причина в том, что Spring сразу выглядит под firstspringbootподпакета для поиска класса выполнения, так как это идентификатор артефакта.

Вероятно, правильный подход должен быть следующим:

1) Держите класс запуска приложения в более высоком подпакете, чем классы ресурсов / контроллеров.

например com.my.firstapplication.App, com.my.firstapplication.resources.Resource и т. Д.

2) Если я полагаюсь на ручные настройки, используйте @EnableAutoConfiguration и @ComponentScan

3) Если я полагаюсьна весну это сделать - это @SpringBootApplication

0 голосов
/ 12 ноября 2018

Попробуйте добавить http-метод в ваш запрос.

@RequestMapping(path = "/hello", method=RequestMethod.GET)

или попробуйте удалить первую конечную точку, которую вы объявили с путем "/"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...