首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Autowired在spring项目中失败

@Autowired在spring项目中失败
EN

Stack Overflow用户
提问于 2015-08-19 10:39:25
回答 1查看 1.1K关注 0票数 0

我有一个简单的Spring项目,就在一个模板上:

代码语言:javascript
复制
@SpringBootApplication
@RestController
public class HelloWorldRestApplication {

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

    Performer p = new Performer();
    p.perform();
    }
}

我有一个确保自动装配工作的测试,实际上它在这个测试类中是这样做的(示例来自Spring in Action,4):

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)
public class CDPlayerTest {

@Autowired
private CDPlayer cdp;

@Test
public void cdShouldNotBeNull(){
    assertNotNull(cdp);
    }
}

以及:

代码语言:javascript
复制
public class Performer {

@Autowired
private CDPlayer cdp;

public void perform(){
    System.out.println(cdp);
    cdp.play();
}

public CDPlayer getCdp() {
    return cdp;
}

public void setCdp(CDPlayer cdp) {
    this.cdp = cdp;
}
}

以及:

代码语言:javascript
复制
@Component
public class CDPlayer{

public void play(){
     System.out.println("play");
  }
}

配置:

代码语言:javascript
复制
 @Configuration
 @ComponentScan
 public class CDPlayerConfig {

 }

但是,它在HelloWorldRestApplication中不起作用,我得到null。

添加@ContextConfiguration(classes=CDPlayerConfig.class)是没有帮助的。

我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-19 11:08:19

尝试在主类中启用@ComponentScan包,并从ApplicationContext获取Performer类实例,如下所示:

代码语言:javascript
复制
@SpringBootApplication
@RestController
@ComponentScan({“package.name.1”,”package.name.2”})
public class HelloWorldRestApplication {

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

    Performer p = ctx.getBean(Performer.class);//get the bean by type                      
    p.perform();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32093164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档