我尝试用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会计算出依赖关系。
多谢提前指点!
默认情况下,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