es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

BeanFactory y el ApplicationContext

Tengo esta clase:

@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;
    }

..
}

Quiero crear los beans para las clases de prueba:

<bean id="userRepository" class="eu.lopo.repositories.security.UserRepository" abstract="true"></bean>

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

pero tengo el error: No se puede utilizar el bean abstracto aquí

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en java, spring y inversión de control, se produce el error “No se puede usar un bean abstracto aquí” porque el bean “userRepository” ha sido definido como un bean abstracto. Los beans abstractos no pueden ser utilizados directamente como una referencia de bean en otra definición de bean, de ahí el error.

    Para solucionar este error, puedes modificar la definición del bean “userRepository” eliminando el atributo “abstract=”true””. Esto permite que el bean “userRepository” sea instanciado y utilizado en otras definiciones de beans.

    Aquí tienes la definición actualizada del bean “userRepository” sin el atributo “abstract”:

    <bean id="userRepository" class="eu.lopo.repositories.security.UserRepository"></bean>
    

    Con esta modificación, deberías poder crear el bean “securityManagerService” sin problemas.

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

    ¡Espero que esto te ayude!

Comments are closed.