류딱스
436
2017-11-09 18:38:46 작성 2017-11-09 18:53:39 수정됨
6
1272

spring @Autowired 주입이 안되는데..도움부탁드립니다 꾸벅 ( _ _ )



package kr.sgone.cmm.web;

import java.util.List;
import java.util.Map;

import javax.mail.internet.MimeMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

@Component
public class mailSender {
	@Autowired
	static
	JavaMailSender mailSender;
	
	public static void sendMail(Map<String, Object> condition, List<String> receiver) {
		String from = "registry@iho.int";
		String subject = condition.get("subject").toString();
		String mailContent = condition.get("mailContent").toString();
		String to = null;
		
		int status = Integer.parseInt(condition.get("status").toString());
		
		for ( String s : receiver ) {
			if ( status == 1 ) {
				to = s;
				try {
					MimeMessage message = mailSender.createMimeMessage();
                    MimeMessageHelper messageHelper = new MimeMessageHelper( message, true, "UTF-8" );
                    messageHelper.setTo( to ); // 받는사람
                    messageHelper.setText( mailContent, true ); // 본문
                    messageHelper.setFrom( from, "GI registry" ); // 보내는 사람
                    messageHelper.setSubject( subject ); // 제목

                    mailSender.send( message );
				} catch (Exception e ) {
					e.printStackTrace();
				}
			}
			
		}
	}
}


위 소스처럼 메일보내는 클래스를 따로빼서 사용하려고 하는데요.

JavaMailSender mailSender 에 의존성이 주입이 안됩니다. ㅠㅠ

xml 설정이 잘못된건가 싶어서


@Controller 어노테이션쪽에 JavaMailSender mailSender 선언해봤더니

거기선 의존성 주입이 잘되더라구요.


mailSender 클래스에 @Autowired로 의존성이 주입안되는 이유가 뭔지 알수있을까요?ㅠㅠ

아래는 component-scan 설정입니다.


<context:component-scan base-package="egovframework">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>




0
0
  • 답변 6

  • Lazarus7
    540
    2017-11-09 19:25:35

    http://debop.blogspot.kr/2013/05/spring-framework-static-field-injection.html

    0
  • LichKing
    15k
    2017-11-09 21:39:28

    저거 왜 static으로 선언하시는거에요?

    0
  • 류딱스
    436
    2017-11-10 09:16:46

    LichKing //

    static 함수에서 쓰일 변수라 static으로 선언했습니당

    0
  • LichKing
    15k
    2017-11-10 11:33:29

    그럼 저 메서드는 왜 static으로 하셨어요?

    0
  • 류딱스
    436
    2017-11-10 13:58:43

    LichKing //

    저 메서드가 다른곳에서 쓰일것이기때문에 static으로 선언했구요.

    mailSender라는 변수는 static메소드안에서 쓰이기때문에 static변수로 선언했습니다.ㅠ

    0
  • Lazarus7
    540
    2017-11-10 14:18:08

    스프링은 아주좋은.. DI기능을 제공하고있습니다. Static으로 선언안하셔도 다른곳에서 사용가능합니다..

    JavaMailSender mailSender

    에 DI 하시려는것처럼 다른 클래스에서 해당 클래스 객체 주입받아서 해보세요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.