spring 引导应用程序中的自动装配字段为空

Autowired field is null in spring boot application

我正在实现一个简单的 spring 引导应用程序:

Content class:

Entity
@Table(name = "content")
public class Content implements Serializable {

public Content() {
}

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;

@NotNull
private String title;

//getter/setter and toString()
}

ContentRepository接口:

@Repository
public interface ContentRepository extends CrudRepository<Content, Long>{
}

RepositoryConfiguration:

@Configuration
@EnableJpaRepositories({"com.tarameshgroup.derakht.repository"})
@EntityScan("com.tarameshgroup.derakht.domain")
@ComponentScan("com.tarameshgroup.derakht")
public class RepositoryConfiguration {
}

Application class 用于测试:

@SpringBootApplication
@EnableAutoConfiguration
@Import({RepositoryConfiguration.class})
public class Application {

    private static final Logger logger = org.slf4j.LoggerFactory.getLogger(Application.class);

    @Autowired
    static ContentRepository contentRepository; // Why is null?

    public static void main(String[] args) {
        logger.info("Running application...");
        SpringApplication.run(Application.class);

        System.out.println("contentRepository: " + contentRepository); //why contentRepository is null?
    }

您将 ContentRepository 定义为静态字段。要么让它成为非静态的,要么使用这个技巧 @autowired in static classes