Framework2024. 10. 15. 11:00

@Autowired

  • Spring 프레임워크에서 제공하는 애노테이션입
  • **타입(Type)**을 기준으로 의존성 주입을 수행
  • 기본적으로는 필드, 세터 메서드, 생성자에 사용할 수 있음
  • 타입에 맞는 빈이 여러 개 있을 경우, @Qualifier를 함께 사용하여 특정 빈을 지정
  • 주입할 빈이 없을 경우, 예외가 발생
    required=false로 설정하면, 주입할 빈이 없어도 예외를 발생시키지 않는다.

 

@Autowired
private MyService myService;


@Autowired(required = false)
private MyService myService;

 

 @Resource

  • JDK 표준(JSR-250) 애노테이션으로, Spring 외의 Java EE 환경에서도 사용
  • **이름(Name)**을 기준으로 의존성 주입
  • 이름을 먼저 검색하고, 이름으로 주입할 빈이 없으면 타입을 기준으로 빈을 주입
  • 기본적으로 필드 또는 세터 메서드에 사용할 수 있음
  • 주입할 빈을 이름으로 명시하고 싶을 때 사용
@Resource(name = "myService")
private MyService myService;

 

주요 차이점 요약

  1. 주입 방식:
    • @Autowired는 타입을 기준으로 주입
    • @Resource는 기본적으로 이름을 기준으로 주입 (이름으로 찾지 못할 경우 타입으로 주입)
  2. 애노테이션 출처:
    • @Autowired는 Spring 전용 애노테이션
    • @Resource는 Java 표준 애노테이션(JSR-250)으로, Spring 외의 Java EE 환경에서도 사용될 수 있음
  3. 추가 설정:
    • @Autowired는 @Qualifier와 함께 사용할 수 있어 여러 빈 중 특정 빈을 선택할 수 있음
    • @Resource는 name 속성을 통해 빈 이름을 지정할 수 있음

어느 것을 사용할지

  • Spring에 종속적인 애플리케이션에서는 **@Autowired**를 더 자주 사용
  • 표준 Java 애노테이션을 선호하거나 이름 기반 주입이 필요한 경우 **@Resource**를 사용할 수 있음.
Posted by 비니미니파파
Framework2017. 2. 15. 09:19

Spring + Mybatis + log4j 연동 중 아래의 오류가 발생


The content of element type "log4j:configuration" must match "(renderer*,appender*,plugin*,(category|logger)*,root?,(categoryFactory|loggerFactory)?)".


log4j.xml 에 새로운 logger 추가 시 <root> 하단에 추가 하여 오류가 난 것이다.

<logger ...>

</logger>


logger 순서를 지켜야 한다.


새로운 logger 추가 시 logger 밑에다 추가 하자

Posted by 비니미니파파
Framework2014. 12. 10. 10:51

servlet-context.xml 설정 추가

    
    <interceptors>
        <interceptor>
            <mapping path="/**/*" />
            <exclude-mapping path="/main/*"/>
            <exclude-mapping path="/login/*"/>
            <beans:bean class="com.d4emon.interceptor.SessionInterceptor"></beans:bean>            
        </interceptor>        
    </interceptors>
    
    

*** exclude-maping 은 Spring 3.2 부터 지원한다. ****

SessionInterceptor.java 파일 생성

 

package com.d4emon.interceptor;

 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;  
 import javax.servlet.http.HttpSession;

 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
  
 public class SessionInterceptor extends HandlerInterceptorAdapter {
  
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

   System.out.println("Interceptor : PreHandle");
   
   // Session userid check
   HttpSession session = request.getSession();   
   String userid = (String) session.getAttribute("userid");

   // Login false
   if(null==userid) {
    System.out.println("Interceptor : Session Check Fail");
    // main page 로 이동
    response.sendRedirect("/main/main.do");
    return false;
   } 
   // Login true
   else { 
    System.out.println("Interceptor : Session Check true");
    return super.preHandle(request, response, handler);
   }
  }
 }

Posted by 비니미니파파