[Spring] Instâncias not-singleton (prototype) com passagem de argumento

27 06 2011

Problema

Como configurar uma entidade com escopo não singleton(prototype) com passagem de argumento, ou seja, a cada pedido da entidade para o spring o mesmo retorna uma nova instancia com o parâmetro especificado.

Solução:

No meu caso a entidade era uma classe que armazenava a sessão do usuário, e precisava especificar por argumento de qual o usuário que pertence a instância.

Definição do bean com seu construtor:

public class UserSessionImp implements UserSession {
    public UserSessionImp(User user) {
        this.user = user;
    }
............... Etc..
}

Configuração da entidade no contexto do Spring:


<bean id="userSession"
lazy-init="true" scope="prototype">
    <constructor-arg value="" />
</bean>

Teste para validar a busca do bean:

@Autowired
private ApplicationContext applicationContext;

@Test
public final void shouldLoadWithSpecifiedUser() {
    UserSession s1 = (UserSession) applicationContext.getBean("userSession", new User("scope1")); //$NON-NLS-1$ //$NON-NLS-2$
    Assert.assertNotNull(s1);
    UserSession s2 = (UserSession) applicationContext.getBean("userSession", new User("scope2")); //$NON-NLS-1$ //$NON-NLS-2$
    Assert.assertNotNull(s2);
    Assert.assertFalse(s1.equals(s2));
}


FONTE: AQUI  e AQUI

Anúncios

Ações

Information

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: