【问题标题】:BeanFactory and the ApplicationContextBeanFactory 和 ApplicationContext
【发布时间】:2021-12-06 12:44:39
【问题描述】:

我有这门课:

@Service
public class SecurityManagerService implements ISecurityManagerService {


    private final UserRepository userRepository;
    private final RoleRepository roleRepository;
    private final RightRepository rightRepository;

    public SecurityManagerService(UserRepository userRepository,
                                  RoleRepository roleRepository,
                                  RightRepository rightRepository) {

        this.userRepository = userRepository;
        this.roleRepository = roleRepository;
        this.rightRepository = rightRepository;
    }

..
}

我想为测试类创建 bean:

   <bean id="userRepository" class="eu.lopo.repositories.security.UserRepository" abstract="true"/>
    
    <bean id="securityManagerService" class="eu.lopo.services.security.SecurityManagerService"  >
        <constructor-arg><ref bean="userRepository"/></constructor-arg>
       
    </bean>

但我有错误:Abstract bean cannot be used here

【问题讨论】:

  • 您的问题到底是什么?请发布有关您要实现的目标的更多详细信息。
  • 使用 3 个参数创建 bean securityManagerService

标签: java spring inversion-of-control tnsping


【解决方案1】:

我认为最好使用 Annotation 来注入依赖项。 Springboot 现在提供了一种非常优雅和简单的方式来注入依赖服务。

@服务 公共类 SecurityManagerService 实现 ISecurityManagerService {

private final UserRepository userRepository;
private final RoleRepository roleRepository;
private final RightRepository rightRepository;

public SecurityManagerService(@Autowired UserRepository userRepository,
                              @Autowired RoleRepository roleRepository,
                              @Autowired RightRepository rightRepository) {

    this.userRepository = userRepository;
    this.roleRepository = roleRepository;
    this.rightRepository = rightRepository;
}

.. }

或者您可以通过 setter 或纯粹不使用 constructor 来使用 @@Autowired 。希望这能给你一些线索。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 2014-03-26
  • 2012-03-23
  • 2015-05-31
  • 1970-01-01
  • 2015-11-03
相关资源
最近更新 更多