The problem: overridden run() method from CommandLineRunner class is not being executed.
Folder structure:
Code:
Main class:
package com.diplproj.api;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
CommandLineRunner class:
package com.diplproj.api.config;
import com.diplproj.api.repository.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.sql.*;
@Component
public class DbInitialization implements CommandLineRunner {
@Autowired
CropYieldRepository cropYieldRepository;
@Autowired
CultureRepository cultureRepository;
@Autowired
LocationRepository locationRepository;
@Autowired
MicroclimateNameRepository microclimateNameRepository;
@Autowired
MicroclimateValueRepository microclimateValueRepository;
@Override
public void run(String... args) throws Exception {
System.out.println("THIS IS NOT PRINTING");
}
As it says in the println() method, this is not printing anything, only this startup logs:
2021-12-12 17:51:09.371 INFO 17832 --- [ restartedMain] com.diplproj.api.ApiApplication : Starting ApiApplication using Java 1.8.0_291 on DESKTOP-6IFP1I4 with PID 17832
2021-12-12 17:51:09.373 INFO 17832 --- [ restartedMain] com.diplproj.api.ApiApplication : No active profile set, falling back to default profiles: default
2021-12-12 17:51:09.452 INFO 17832 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2021-12-12 17:51:09.452 INFO 17832 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2021-12-12 17:51:10.706 INFO 17832 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2021-12-12 17:51:10.835 INFO 17832 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 111 ms. Found 5 JPA repository interfaces.
2021-12-12 17:51:11.819 INFO 17832 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2021-12-12 17:51:11.830 INFO 17832 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-12-12 17:51:11.831 INFO 17832 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.55]
2021-12-12 17:51:11.971 INFO 17832 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-12-12 17:51:11.971 INFO 17832 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2518 ms
2021-12-12 17:51:12.215 INFO 17832 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2021-12-12 17:51:12.278 INFO 17832 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.6.1.Final
2021-12-12 17:51:12.468 INFO 17832 --- [ restartedMain] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2021-12-12 17:51:12.676 INFO 17832 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
There are couple existing questions on this topic on Stackoverflow, but nothing helped. Does anyone have an idea what might be causing the problem?
Thanks in advance.
CodePudding user response:
@moze
Did you try annotating the main class as below?
@ComponentScan(basePackages = {"com.diplproj.api"})
If that works I would expect there is an issue in the package hierarchy that spring unable to scan your CommandLiner class.
CodePudding user response:
This is weird to be honest. For me it works without problem. Does your Spring project start successfully though?
Started Application in 4.728 seconds (JVM running for 5.885)
This message is missing in your log. CommandLineRunner will be executed after that message.
Another thing to note is you should declare all dependency injection variables as private but that shouldn't block Commandlinerunner anyways. Also @AutoWired is discouraged to use so try constructor dependency injection instead to see if that is causing problem.