【问题标题】:Can we Autowired below class into Configuration class in springboot我们可以在spring boot中将下面的类自动连接到配置类中吗
【发布时间】:2019-09-17 11:48:57
【问题描述】:

我有一个组件类和一个配置类,所以我们可以自动装配内部使用@value的组件类吗,我尝试使用它但它抛出异常,谁能帮助我理解

@Component
public class UserAction {
    @Value("${cp.user.name}")
    private String userName;

    @Value("${cp.user.actiontype}")
    private String actionType;

    @Value("${cp.user.designation}")
    protected Designation designation;

    public void show() {
        System.out.println(userName);
        System.out.println(actionType);
        System.out.println(designation);
    }
} 

@Configuration
@ComponentScan("com.example")
public class AppConfig {

@Autowired
UserAction userAction;
------
} 

所以我的问题是:我可以将我的 UserAction bean 自动连接到我的 AppConfig 类中吗? 我尝试使用它,但它抛出异常,所以我们可以自动装配内部使用 @value 的组件:

无法启动网络服务器;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“AppConfig”的 bean 时出错:通过字段“userAction”表示的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“userAction”的 bean 时出错:注入自动装配的依赖项失败;嵌套异常是 java.lang.IllegalArgumentException:无法解析值“${cp.user.actiontype}”中的占位符“cp.user.actiontype”

【问题讨论】:

  • 我重新设计了一点以保持 spring 词汇。
  • 确实是 Mustahsan。请显示您使用的 yaml/properties 文件及其位置。
  • 您在任何 application.yml 中都有 cp.user.actiontype 吗?还是应用程序-[env].yml?
  • 我已经在 yml cp: user: actionType: get 中设置了值

标签: java spring-boot spring-profiles


【解决方案1】:

是的,您可以在 Configuration 类中使用 Autowire bean,但这里的问题是您的 bean 中的属性在 properties/yml 文件中没有设置值

@Value("${cp.user.actiontype}")

在您的 .properties 或 .yml 文件中设置属性 cp.user.actiontype

【讨论】:

  • 我已经在 yml cp: user: actionType: get 中设置了值
  • 缩进正确吗?你能告诉我们你的 application.yml 吗?
  • 当我尝试使用属性文件时仍然出现错误无法启动 Web 服务器;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“serverConfig”的 bean 时出错:通过字段“dataSourceConstants”表示不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“UserAction”的 bean 时出错:注入自动装配的依赖项失败;嵌套异常是 java.lang.IllegalArgumentException: 无法解析占位符 'cp.user.factory'
  • 这是我的 application-dev.properties 文件 cp.user.actiontype= get cp.user.name= hello cp.user.designation= IT 并在我的 application.properties 文件中添加了 spring。 profile.active=dev
猜你喜欢
  • 1970-01-01
  • 2020-11-15
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2020-08-19
  • 2021-05-14
相关资源
最近更新 更多