我正在尝试为我的Spring Boot应用程序配置加载时编织,以正确地自动连接对< code>@Configurable java类的依赖。
下面是我的配置/主类:
package com.bignibou;
@Configuration
@EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class, ThymeleafAutoConfiguration.class, FlywayAutoConfiguration.class })
@EnableSpringConfigured
@EnableLoadTimeWeaving(aspectjWeaving = AspectJWeaving.ENABLED)
@ComponentScan
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
以下是我如何启动应用程序(我的 gradle 版本重命名为 spring-instrument jar):
java -javaagent:build/lib/springinstrument.jar -jar myapp.jar
下面是@Configurable
个不自动连接其依赖项的类:
package com.bignibou.converter;
@Configurable
public class StringToDayToTimeSlotConverter implements Converter<String, DayToTimeSlot> {
@Autowired
private DayToTimeSlotRepository dayToTimeSlotRepository;//NOT AUTOWIRED!!
@Override
public DayToTimeSlot convert(String id) {
return dayToTimeSlotRepository.findOne(Long.parseLong(id));//NPE HERE!!
}
}
这里的类被实例化(<鳕鱼
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.bignibou.controller" }, useDefaultFilters = false, includeFilters = { @Filter(type = FilterType.ANNOTATION, value = Controller.class),
@Filter(type = FilterType.ANNOTATION, value = ControllerAdvice.class) })
@Import(ApplicationControllerAdvice.class)
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
...
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new DayToTimeSlotToStringConverter());
registry.addConverter(new StringToDayToTimeSlotConverter());//INSTANTIATED HERE!
registry.addConverter(new LanguageToStringConverter());
registry.addConverter(new StringToLanguageConverter());
registry.addConverter(new AddressToStringConverter());
registry.addConverter(new StringToAddressConverter());
super.addFormatters(registry);
}
谁能请帮助弄清楚为什么<代码>字符串
非常老的问题,至少有一个解决方案的建议,我会把它变成一个答案,这样问题就可以“关闭”了。将< code > StringToDayToTimeSlotConverter 转换为Bean,如下所示:
@Bean
public class StringToDayToTimeSlotConverter implements Converter<String, DayToTimeSlot> {
@Autowired
private DayToTimeSlotRepository dayToTimeSlotRepository;
@Override
public DayToTimeSlot convert(String id) {
return dayToTimeSlotRepository.findOne(Long.parseLong(id));
}
}
在WebMvc配置
中注入所有可用的转换器,如下所示:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.bignibou.controller" }, useDefaultFilters = false, includeFilters = { @Filter(type = FilterType.ANNOTATION, value = Controller.class),
@Filter(type = FilterType.ANNOTATION, value = ControllerAdvice.class) })
@Import(ApplicationControllerAdvice.class)
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Autowired
List<Converter> converters;
@Override
public void addFormatters(FormatterRegistry registry) {
for (Converter converter : converter) {
registry.addConverter(converter);
}
super.addFormatters(registry);
}
}
我正在开发一个具有可重用逻辑的公共java库,以与一些AWS服务交互,这些服务将依次被多个消费者应用程序使用。出于这里概述的原因,以及Spring Boot似乎为SQS集成之类的东西提供了大量无模板代码的事实,我决定将此公共库实现为具有自动配置的定制Spring Boot启动器。 我也是Spring框架的新手,因此遇到了一个问题,即我的自动配置类的实例变量没有通过AutoWired注释进行初始化。
问题内容: 我正在开发一个小型Java EE Hibernate Spring应用程序,出现错误: 这是我的控制器ArticleControleur,其中包含用于恢复文章列表的功能: 这是我的articleService: 这是我的应用程序上下文: 问题答案: 该错误表明不是注册的Bean。添加其中包含将在你的应用程序上下文中自动装配的bean的软件包: 或者,如果你想将所有子包包括在com.bd
大家好,我收到下一个错误,我是使用Hibernate的新手
这是我的当前设置:ProjectRepo: ProjectService: ProjectRestController:
通过Intellij执行的Spring Boot测试运行良好。但是当我用Maven运行测试时,它们失败了。 我使用这个Maven测试命令: 在surefire插件报告中找到的原因: ------------------------------------------------------------------------- 测试集:com.miro.project.controllers.Pr
和我的配置类: 1)AppConfig。 2)AppInitializer: 不幸的是同样的结果: 找不到依赖项得[Kamienica.Service.CustomUserDetailsService]类型得合格bean:需要至少1个具有此依赖项自动候选资格得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(re