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

如何定义Spring-Boot中的依赖注入?

牛昱
2023-03-14

我尝试用Spring-Boot创建一个spring web应用程序。我的第一个问题是依赖注入对我不起作用。这是我跟踪的那篇文章。

我创建了一个应用程序类:

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}
@RestController
public class GreetingController {

    @Autowired
    WfExampleDao wfExampleDao;

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
        wfStartDao.insert(null);
        return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
    }
}
public interface WfExampleDao {
    public void insert(WfExample wfExample);
}
@Component
public class WfExampleDaoImpl extends JdbcDaoSupport implements WfExampleDao {

    private Logger logger;

    public WfExampleDaoImpl() {
        this.logger = LoggerFactory.getLogger(this.getClass());
    }

    @Override
    public void insert(WfExample wfExample) {
        logger.info("Insert is not implemented yet.");
    }
}

我的分级文件

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.6.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'war'

war {
    baseName = 'gs-rest-service'
    version =  '0.1.0'
}

jar {
    baseName = 'gs-rest-service'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile group: 'org.springframework', name: 'spring-context', version: '4.3.11.RELEASE'
    compile 'org.springframework:spring-jdbc:4.3.11.RELEASE'

    compile 'commons-dbcp:commons-dbcp:1.4'
    compile 'commons-pool:commons-pool:1.6'


    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.5.6.RELEASE'
    providedRuntime group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '1.5.6.RELEASE'
    testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '1.5.6.RELEASE'
} 

我所期望的:当我打开/greeting页面时,将出现log,但我在Gradle Bootrun的开头得到了这一点:

2017-09-12 10:47:56.058警告7545--[main]ConfigEmbeddedWebApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatisfiedDependencyException:创建名称为“greeting controller”的bean时出错:通过字段“WF ExampleDAO”表示的不满足的依赖关系;嵌套异常为org.springframework.beans.factory.noSuchBeanDefinitionException:没有“hu.example.dao.wfexampledao”类型的合格bean可用:应至少有一个合格的自动候选bean。依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}

我不知道为什么找不到依赖。在我阅读的过程中,我不必创建applicationcontext.xml,因为bootRun会计算出依赖关系。

多谢提前指点!

共有1个答案

徐鸿达
2023-03-14

默认情况下,springboot将扫描Application类子包中的所有组件。您没有指定组件扫描,因此请确保所有类都在application的相同包或子包中。

 类似资料:
  • 我需要从一个自定义映射方法访问一个Spring bean。但是在单元测试映射方法时,我还需要能够注入Spring bean的模拟。 下面是我的映射器类的一个最小示例: 因此,问题是:如何以最干净的方式实现这种类型的逻辑,以便生成的映射器实现是单元可测试的,并且可以正确地模拟依赖关系? 使用MapStruct 1.3.0、Final、Spring 4.3.25、Release、Mockito 1.9

  • 在启动springboot应用程序时出现了一些异常。我不知道我错过了什么。 这里是我的代码:这是入口: 这是控制器: 这是pom.xml 这是日志(对格式抱歉): 问题已经修复,我更新了ContextConfig.class,如下所示:` `

  • 我有一个Spring启动应用程序,我最近从v1.3.3. RELEASE升级到v1.4.2. RELEASE。 用于我在v1中的集成测试。3.3,我有一个豆子,我能够成功地监视它。我在运行测试时,配置文件,下面的被激活,而不是应用程序的。 我正在升级到v1。4.2.发布并希望使用spyBean注释模拟单个方法,而不依赖于概要文件。 我对我的测试方法做了以下改变,以尝试它- 然而,当我尝试上述方法时

  • 我试图将spring-cloud堆栈用于一个使用Zuul的项目。在我的组织中,我们有一个基于XML的自定义配置堆栈,它执行属性组合和分层重写。由于这种配置的处理方式,我一直在努力为它创建一个PropertySource。 我的自定义PropertySource必须使用我的配置bean,但是因为PropertySources是在spring boot的引导过程中初始化的,所以应用程序上下文还没有完全

  • 我正在编写一个应用程序,该应用程序与一个数据库通信,获取其他数据库的凭据,并连接到其他数据库。它使用在运行时构造的数据源和实体管理器工厂来执行此操作。 如果我想使用Spring Data Repositories,我想我需要自动连接它们,因此它们必须是Spring Beans。 如果在对第一个数据库运行查询之前没有构造的DataSource,我如何使用Spring Data?

  • 谢谢你。 更新:我找到了另一个解决方案,并在另一个帖子中发布了答案:https://stackoverflow.com/a/52021965/2580829