2017-11-13 13 views
2

私は最もよく似た質問をチェックしましたが、答えが見つかりません。私は新しい質問を投稿することしかできません。スプリングブーツで休息コントローラが動作しない

エラーが発生してもアプリケーションを正常に実行できますが、書き込む残りのAPIは正しくアクセスできません。起動ログをofficial tutorialsと比較して、類似のログがないことがわかりました以下:

package com.teachermate; 

import com.alibaba.druid.pool.DruidDataSource; 
import com.teachermate.entites.TeacherMateSettings; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.context.properties.EnableConfigurationProperties; 
import org.springframework.context.annotation.Bean; 
import org.springframework.core.env.Environment; 

import javax.sql.DataSource; 

@SpringBootApplication 
@EnableConfigurationProperties({TeacherMateSettings.class}) 
public class JobScheduleApplication { 

    @Autowired 
    private Environment env; 

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

    @Bean 
    public DataSource dataSource() { 
     DruidDataSource dataSource = new DruidDataSource(); 
     dataSource.setUrl(env.getProperty("spring.datasource.url")); 
     dataSource.setUsername(env.getProperty("spring.datasource.username")); 
     dataSource.setPassword(env.getProperty("spring.datasource.password")); 
     dataSource.setInitialSize(2); 
     dataSource.setMaxActive(20); 
     dataSource.setMinIdle(0); 
     dataSource.setMaxWait(60000); 
     dataSource.setValidationQuery("SELECT 1"); 
     dataSource.setTestOnBorrow(false); 
     dataSource.setTestWhileIdle(true); 
     dataSource.setPoolPreparedStatements(false); 
     return dataSource; 
    } 
} 
:ここ

2017-11-13 17:37:50.921 INFO 6503 --- [   main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot[email protected]2328c243: startup date [Mon Nov 13 17:37:49 CST 2017]; root of context hierarchy 
2017-11-13 17:37:51.061 INFO 6503 --- [   main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/greeting]}" onto public hello.Greeting hello.GreetingController.greeting(java.lang.String) 
2017-11-13 17:37:51.066 INFO 6503 --- [   main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 
2017-11-13 17:37:51.067 INFO 6503 --- [   main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 
2017-11-13 17:37:51.126 INFO 6503 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2017-11-13 17:37:51.127 INFO 6503 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2017-11-13 17:37:51.188 INFO 6503 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 

は、いくつかの私のjavaファイルです、ホープ誰もが

にメインのアプリケーションファイルを私の問題を解決するためにいくつかのキーポイントを見つけることができます

コントローラファイル:

@RestController 
@RequestMapping(path = "/test") 
public class TestController { 
    @RequestMapping(method = RequestMethod.GET) 
    public JSONObject HelloWorld() { 
     JSONObject res = new JSONObject(); 
     LOGGER.info("HelloWorld Test!"); 
     res.put("data", "hello world!"); 
     res.put("errCode", 0); 
     return res; 
    } 
} 

のpom.xml:私はいくつかのコードまたは(ドルイドのような)ライブラリを追加する前に

<?xml version="1.0" encoding="UTF-8"?> 
<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.teachermate</groupId> 
    <artifactId>job-scheduler</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>jobSchedule</name> 
    <description>job schedule for teachermate</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.7.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-redis</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jdbc</artifactId> 
      <exclusions> 
       <exclusion> 
       <groupId>org.apache.tomcat</groupId> 
       <artifactId>tomcat-jdbc</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-configuration-processor</artifactId> 
      <optional>true</optional> 
     </dependency> 

     <dependency> 
      <groupId>com.alibaba</groupId> 
      <artifactId>fastjson</artifactId> 
      <version>1.2.39</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.30</version> 
     </dependency> 
     <dependency> 
      <groupId>org.quartz-scheduler</groupId> 
      <artifactId>quartz</artifactId> 
      <version>2.2.1</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>23.2-jre</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>4.3.6</version> 
     </dependency> 
     <dependency> 
      <groupId>com.alibaba</groupId> 
      <artifactId>druid</artifactId> 
      <version>1.0.19</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <executable>true</executable> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

ところで、残りのAPIが正常に動作します。 しかし、私はそれが何の原因を知りません、誰も助けることができますか?または誰でも私にそれをデバッグする方法を示すことができますか?ありがとう!

その他の情報が必要な場合は、コメントに記載してください。


更新

私はそれが正常に動作

@RestController 
@RequestMapping(path = "/test") 
public class GreetingController { 

    private static final String template = "Hello, %s!"; 
    private final AtomicLong counter = new AtomicLong(); 

    @RequestMapping("/greeting") 
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { 
     return new Greeting(counter.incrementAndGet(), 
          String.format(template, name)); 
    } 

    @RequestMapping(method = RequestMethod.GET) 
    public JSONObject HelloWorld() { 
     JSONObject res = new JSONObject(); 
     res.put("data", "hello world!"); 
     res.put("errCode", 0); 
     return res; 
    } 
} 

official tutorialsでコントローラを変更しました!

+0

GreetingControllerと同じパッケージにテストコントローラを追加し、 – shakeel

+0

を試してください。おそらく、spring-boot-webのfastjsonとjacksonの間に競合があります。 fastjson依存関係をもう一度削除し、うまく動作するかどうかを確認してください。 –

+0

@GurkanYesilyurt残りのAPIは以前はうまくいきました。そのとき私はfastjsonライブラリを使用しました –

答えて

0

私はついにそれを理解しました。

@PostConstruct Annotationを持つメソッドでwhileループを記述します。スプリングのメインプロセスをブロックして、残りのコントローラがロードされないようにする必要があります。

どのようにばかですか?

-1

下記のようにリクエストマッピングアノテーションを適用してみてください。また

@RestController 
public class TestController { 
    @RequestMapping(method = RequestMethod.GET) 
    @RequestMapping(path = "/test") 
    public JSONObject HelloWorld() { 
     JSONObject res = new JSONObject(); 
     LOGGER.info("HelloWorld Test!"); 
     res.put("data", "hello world!"); 
     res.put("errCode", 0); 
     return res; 
    } 
} 

、より多くの例については、以下のリンクをご確認ください: http://www.baeldung.com/spring-requestmapping

0

がテストに人のクラスを作成します:コントローラのあなたの方法で

public class Person{ 

private String name; 
private String nickname; 

//getters and setters... 
} 

、これを試してみてください。

@GetMapping(value ="/test", consumes = {MediaType.APPLICATION_JSON_VALUE }) 
    public ResponseEntity<?> helloWorld() { 
     Person person = new Person(); 
     person.setName("test"); 
     person.setNickname("test2"); 
     return ResponseEntity.status(HttpStatus.OK).body(person); 
    } 
+0

ここに人のクラスを追加する必要があります。あなたは直接URLを押してチェックすることができます。 –

+0

このメソッドは機能しませんか? –

0

ここにはいくつか欠けているものがあります。

@RequestMapping(value = "/testing", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON) 
public @ResponseBody ResponseEntity<JSONObject> HelloWorld() { 
    JSONObject res = new JSONObject(); 
    LOGGER.info("HelloWorld Test!"); 
    res.put("data", "hello world!"); 
    res.put("errCode", 0); 
    return ResponseEntity.status(HttpStatus.OK).body(res); 
} 

@RequestMapping注釈:まず、あなたが定義した関数にし、JSONObjectを返すためRequestMappingを追加する必要がある、あなたは、関数の戻り値の型 サンプルコードとしてResponseEntityとともに@ResponseBody注釈を使用する必要があります関数レベルとクラスレベルの両方で使用できます。クラスレベル注釈値は、最後のRESTエンドポイント内のすべての関数@RequestMapping注釈値の前に付加する必要があります。

+0

'@ RestController'を使うとき、' @ResponseBody'が暗示されます。 –

0

コントローラーを見つけることができない可能性がありますか?はいの場合は、@ComponentScanを使用して試してみてください。@ComponentScanは、helloパッケージ内の他のコンポーネント、設定、サービスを検索し、コントローラを見つけることをSpringに指示します。

@SpringBootApplication 
@ComponentScan(basePackageClasses = TestController.class) 
@EnableConfigurationProperties({TeacherMateSettings.class}) 
public class JobScheduleApplication { 
//Your code here 
} 
+0

他のコンポーネントをBeanとして登録する必要があるため、@ComponentScan(basePackageClasses = TestController.class、basePackages = "com.teachermate") 'を追加します。しかし、それは動作しませんでした –

0

おはよう!

The @RequestMapping annotation should be made in this way 

@RestController 
public class TestController { 

    @RequestMapping(value = "/test", method = RequestMethod.GET) 
    public JSONObject HelloWorld() { 
     JSONObject res = new JSONObject(); 
     LOGGER.info("HelloWorld Test!"); 
     res.put("data", "hello world!"); 
     res.put("errCode", 0); 
     return res; 
    } 
} 

いますが、同じ結果に

@RestController 
public class TestController { 

    @RequestMapping(value = "/test", method = RequestMethod.GET, 
      produces = MediaType.APPLICATION_JSON_VALUE) 
    public HashMap HelloWorld() { 

     HashMap<String, String> res = new HashMap<String, String>();   
      res.put("data", "hello world"); 
      res.put("errorCode", "0"); 
      return res; 

    } 
} 

URLを取得そのように - >はlocalhost:{ポート} /テスト

参考文献:

+0

戻り値の型の違いのため、2番目のコードブロックはコンパイルされません。 –

+0

ありがとう、@ M.Prokhorov!コードが修正されました! – alxwca

関連する問題