DI Spring 3 + Spring Security 3

Estou tentando montar um controle de usuario com Spring Security 3, mas na hora de injetar o objeto AuthenticationManager esta dando problemas.

segue a classe…

[code]@Service(value=“autenticacaoService”)
public class AutenticacaoServiceImpl implements AutenticacaoService {

public void setAuthenticationManager(AuthenticationManager authenticationManager) {
    this.authenticationManager = authenticationManager;
}

private AuthenticationManager authenticationManager;[/code]

dessa maneira quando faço o deploy a aplicação sobe mas o objeto authenticationManager continua nulo.

Ja dessa maneira funciona…

[code]@Service(value=“authenticationService”)
public class AuthenticationService implements Serializable {

@Autowired
@Qualifier("authenticationManager")
private AuthenticationManager authenticationManager;[/code]

o que estou fazendo de errado na classe AutenticacaoServiceImpl que esta diferente da AuthenticationService, na AutenticacaoService tentei com qualifier tb passando direto no atributo private com @Autowired mas dae a aplicação nem sobe pois nao é encontrado um bean para authenticationManager

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void br.com.grupointesis.delivery.service.impl.AutenticacaoServiceImpl.setAuthenticationManager(org.springframework.security.authentication.AuthenticationManager); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.security.authentication.AuthenticationManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:595) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) ... 37 more Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.security.authentication.AuthenticationManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:553) ... 39 more

Para customizar a autenticação, crie um serviço que extenda UserDetailsService.

public interface AuthenticationService extends UserDetailsService {  } 

@Service(value="authenticationService") @Transactional(rollbackFor = Exception.class) public class AuthenticationServiceImpl implements UserDetailsService { public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException { // implement it as you want. im recovering the users using a singleton UserSingleton userSingleton = UserSingleton.getInstance(); return userSingleton.findByUsername(username); } }

[code]<security:global-method-security secured-annotations=“enabled” />
<security:authentication-provider user-service-ref=“authenticationService” />

security:http
<security:form-login />
<security:logout />
</security:http> [/code]

consegui implementar um controle de usuario da maneira que voce me passou, mas agora estou na duvida, por exemplo o SpringSecurity usa a tag de verificação sec:, e nessa verificação eu tenho de passar alguma regra de usuario por exemplo se for do tipo ROLE_ADMIN aparece determinado menu, mas estou desenvolvendo de outra forma, tenho uma tabela de permissoes, onde posso cadastrar n tipos de Usuario, e nessa tabela de permissoes eu vinculo ao tipo usuario as permissoes para abrir determinado menu etc, o Spring security disponibiliza alguma forma de trabalhar assim, ou tenho de montar na mao as opções de renderizar?

Nao sei se ficou muito claro…