복붙노트

[SPRING] bean을 JSF Managed Bean으로 autowiring 할 때 널 (null) 포인터

SPRING

bean을 JSF Managed Bean으로 autowiring 할 때 널 (null) 포인터

나는 스프링 자바 메일과 Velocity Template을 사용하여 아래처럼 이메일 서비스를 개발했다.

Email.java

@Component
public class Email {    

        private JavaMailSender mailSender;      
        private VelocityEngine velocityEngine;  


         @Autowired
        private ApplReviewService applReviewService;

       @Autowired
        private UserService userService;


        public void setUserService(UserService userService ) {
            this.userService=userService;
        }


        public UserService getuserService() {
            return userService;
        }

        @Autowired
        @Required
        public void setMailSender(JavaMailSender mailSender) {
            this.mailSender = mailSender;
        }

        public VelocityEngine getVelocityEngine() {
            return velocityEngine;
        }

        @Autowired
        @Required
        public void setVelocityEngine(VelocityEngine velocityEngine) {
            this.velocityEngine = velocityEngine;
        }

// 전자 메일을 보내는 방법. }

My Spring.xml

<context:component-scan base-package="com.test.common"/>

    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
           </bean>

   <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
      <property name="velocityProperties">
         <value>
            resource.loader=class
            class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
         </value>
      </property>
   </bean>


@ManagedBean(name="person")
@SessionScoped
Public class Person{

@Autowired
private Email email ; // getter and setter for this.

}

Jsf managedBean에 이메일 클래스를 autowire하려고하지만 null 포인터 예외가 발생합니다. 내가 어디로 잘못 가고 있는지.

해결법

  1. ==============================

    1.JSF 관리 빈에서 그와 같은 스프링 빈을 삽입 할 수 없다. 그것을 다음으로 변경하십시오.

    JSF 관리 빈에서 그와 같은 스프링 빈을 삽입 할 수 없다. 그것을 다음으로 변경하십시오.

    @ManagedBean(name="person")
    @SessionScoped
    Public class Person{
    
    @ManagedProperty(value="#{email}")
    private Email email ; // getter and setter for this.
    
    }
    

    참조 :

  2. from https://stackoverflow.com/questions/12847436/null-pointer-when-autowiring-the-bean-into-jsf-managed-bean by cc-by-sa and MIT license