• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

spring security설정파일에서 어노테이션으로 정의한 서비스가 인식이 안돼요

19.09.11 07:26 작성 조회수 312

0

안녕하세요.수업 열심히 잘 듣고 있습니다. 근데 환경이 다르니 힘들긴 하네요.

뭐 어쨌든 현재 스프링을 xml에 설정파일로 등록하여 사용하고 있습니다. 

web.xml에

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<!-- The definition of the Root Spring Container shared by all Servlets 

and Filters -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/config/security-config.xml</param-value>

</context-param>

=================================

spring 설정파일

<security:authentication-manager>

<security:authentication-provider user-service-ref="loginService">

</security:authentication-provider>

</security:authentication-manager>

================================

UserDetailsService를 커스트마이징해서 사용하려는데

@Service("loginService")

public class SecurityLoginService implements UserDetailsService {

spring security설정 파일에서 어노테이션을 인식 못하는지 서버가 start될때 아래와 같은 메시지가 출력됩니다.

No bean named 'loginService' is defined 

spring security설정파일에

<import resource="spring-config.xml" />

를 추가하고 restart하면 오류가 발생하지 않습니다.

이렇게 하지 않고 인식시키는 방법이 없을까요?

답변 4

·

답변을 작성해보세요.

0

@Service어노테이션 붙이고 component-scan으로 추가하면 빈으로 등록되는거 아닌가요? 이렇게 해서 mybatis랑 연동해서 web개발을 잘 하고 사용하고 있었는데 spring security와 연동하면서 위에서 질문했던 것들이 궁금해서 여쭤봤던 것입니다. @Service어노테이션을 이용해서 빈을 등록하는 것이 제가 잘못 알고 있는 것이 있는지 스프링 핵심 기술의 이해라는 강좌도 신청해서 들어봤는데 비슷하게 말씀하시는거 같던데...제가 뭘 잘못알고 있었나보네요..질문이 기분나쁘셨다면 죄송합니다.

0

@Service라는 애노테이션만 붙이면 빈으로 등록되나요?

0

아 빈은 어노테이션으로 @service등록했습니다. (빈의 이름도 loginService로 등록하였습니다. - 패키지도 인식할 수 있도록 모두 등록했습니다.) 스프링 설정 파일과 스프링시큐리티 설정 파일을 따로 만들고 작업하는데 

<security:authentication-manager>

<security:authentication-provider  user-service-ref="loginService">

</security:authentication-provider>

</security:authentication-manager>

만 하면 loginService빈을 인식 못하고

<security:authentication-manager>

<security:authentication-provider  user-service-ref="loginService">

</security:authentication-provider>

</security:authentication-manager>

<import resource="spring-config.xml" />

이렇게 <import>문으로 spring설정 파일을 추가해야 인식해서 제가 놓치고 있는 것이 있는지 궁금해서 여쭤봤습니다.

0

빈으로 등록하지 않고 어떻게 빈으로 주입을 받아서 사용하시려구요. 스프링 핵심 기술의 이해라는 강좌는 혹시 수강하셨는지요?