当前位置: 首页 > 知识库问答 >
问题:

SpringBootApplication不支持我的服务

诸葛卜霸
2023-03-14

我的Spring Boot初始化遇到了麻烦。我在一个简单的Spring Boot项目中有这个结构。

com.project.name
|----App.java (Annoted with @SpringBootApplication and Autowire MyCustomService)
|----com.project.name.service
     |----MyCustomService.java (Annoted with @Service)
2019-03-09 15:23:47.917  INFO 21764 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'jobLauncherTaskExecutor'
...
2019-03-09 15:23:51.775  INFO 21764 --- [       Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'jobLauncherTaskExecutor'
@SpringBootApplication(
        exclude = { DataSourceAutoConfiguration.class }
        //,scanBasePackages  = {"com.project.name.service"}
)

public class App{

    private static Logger logger = LoggerFactory.getLogger(App.class);

    @Autowired
    private static MyCustomService myCustomService;

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

        ...

        myCustomService.anyMethod();//NullPointerException
    }
}

@Bean
public ThreadPoolTaskExecutor jobLauncherTaskExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(10);
    executor.setMaxPoolSize(20);
    executor.setQueueCapacity(25);
    return executor;
}

共有1个答案

邢令
2023-03-14

Spring不能@autowire静态字段,请使用applicationcontext获取bean

@SpringBootApplication(
    exclude = { DataSourceAutoConfiguration.class }
    //,scanBasePackages  = {"com.project.name.service"}
)

public class App{

    private static Logger logger = LoggerFactory.getLogger(App.class);

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(App.class, args);

        MyCustomService myCustomService = (MyCustomService)context.getBean("myCustomService");
        ...

        myCustomService.anyMethod();
    }
}

也可以使用CommandLineRunner

 @SpringBootApplication(
    exclude = { DataSourceAutoConfiguration.class }
    //,scanBasePackages  = {"com.project.name.service"}
)

public class App implements CommandLineRunner {

    private static Logger logger = LoggerFactory.getLogger(App.class);

    @Autowired
    private MyCustomService myCustomService;

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
    public void run(String... args){
        myCustomService.anyMethod();
    }     
}
 类似资料:
  • 问题内容: 我已经在Android中创建了一个网络服务器,该服务器绑定到端口2090,并为Android设备的sdcard服务,如果在Internet Explorer中键入,则可以正常工作,但效果很好,但是当我在其他浏览器中打开它时,它会以文本形式打开HTML文件请帮我。 这是我的代码。 服务器启动器类: jhttp类: RequestProcessor: Logcat: 没有发布,因为没有错误

  • 我无法在远程GlassFish服务器(4.0)上连接/部署/运行任何应用程序,并且已经为此奋斗了几天。 在本地,我运行的是Windows8,我也尝试过使用NetBeans7.3和8.0。我在本地安装了Java7.25和Java8。远程GF服务器是版本4.0 build 89,在多主机Windows 8计算机上,Java 7 25,在Glassfish中启用远程管理。我还让HTTP在8888端口而不

  • 1. Qt 标准支持 — 12 个月 与很多人预想的有所不同,实际上,获得任何 Qt 产品的商业、LGPL 或 GPL 授权的 客户都可以获得 Qt 标准支持。这是很有吸引力的一项人性化的市场策略,也让广大用户对 Qt 产品增强信心,因为这项举措实际上表明了: Qt 不同版本的产品都具有一致的高品质和 优质服务。 标准支持主要面向的是应用程序开发人员。 Qt 在以下几个方面为客户提供一般性的建 议

  • 问题内容: 我是Spring-Batch(和一般的Spring)的新手,并且一直在关注在线文档,以教自己如何完成此任务。我正在尝试连接到DB2数据库。 如果我这样声明XML的DB2连接: 然后将其加载到我的代码中,如下所示: 完美运作。如示例所示,我想如何使用DataSourceBuilder,所以最终我想去: 但是由于某种原因,它不起作用。我懂了 原因:java.lang.IllegalStat

  • 我有一个带有tabbarcontroller的应用程序,两个带有它的controller,现在在一个controller中我以肖像模型显示了uiactionsheet: UIActionSheet*ActionSheet=[[UIActionSheet alloc]InitWithTitle:@""Delegate:nil CancelButtonTitle:@"Cancel"Destructiv

  • 我需要在JAX-WS中通过客户端连接到外部服务器。客户端在Wildfly 8上运行。使用Java8连接是正常的。但我在Java7中连接到服务器时遇到了问题(我尝试了u45、67、79)。服务器端安全性的属性为https://www.ssllabs.com/ssltest/analyze.html?d=app.bundesnetzagentur.de 在部分“密码套件”中有四个密码。源代码不应支持J