This is the first time I independently developed a springboot project. I didn't expect to be so frustrated at the beginning. No matter what path I accessed, it always got 404. I spent almost twelve hours looking for this error.
The path is written incorrectly
The application class is not in the same package as the controller package
After solving the problem, the following solutions may be helpful to you.
The console does not report an error when the request returns 404. I thought it was an error of Initializing Spring DispatcherServlet 'dispatcherServlet'. The reason is that 404 is returned during the request, and only the console will have three more lines of logs:
So I have been searching for errors related to Initializing Spring DispatcherServlet. Unfortunately, I have searched almost all the blogs and still haven't solved the problem. I also believe that brothers searching for line logs have also encountered this problem, but what I want to say here is that this line of logs is normal. I recreated a springboot project and found that the console will also print these three lines of logs when the request is successful.
Misunderstanding 2 is based on the above misunderstanding 1, because everyone thinks that Initializing Spring DispatcherServlet is a mistake, so they look for related methods. One method is to make the following modifications in the configuration file.
But based on my observation, Initializing Spring DispatcherServlet only prints once during the entire project startup, which means that this DispatcherServlet is only initialized once. (A bit nonsense hahaha) The above configuration is to initialize the DispatcherServlet when the project starts. If it is not set or set to a negative number, then the DispatcherServlet is initialized when waiting for the first request to arrive. You can try it yourself and see if you add the above configuration and then start the project, the three lines of logs will be printed directly instead of waiting for the request to come.
The problem is actually very simple, because we use the @ComponentScan annotation. In normal springboot, there is no need to use this annotation, so the application class will automatically scan where it is. All files of the package and sub-packages. But if this annotation is used, the default one will be invalid. The reasons for using the @ComponentScan annotation here can be varied. I introduced a dependency on automatic table creation and followed the tutorial to add a ComponentScan to the application class. So the solution is to add the package path where the application class is located.
Essentially, I am still not sensitive enough to these annotations and spent a lot of time doing useless work, but fortunately it was solved.
The above is the detailed content of How to solve springboot access 404 problem. For more information, please follow other related articles on the PHP Chinese website!