春天:组件中的自动装配服务为空

我创建了一个服务:

  package tn.ett.medial.service;
   @Service
   public class ExchangeService {
     private Currency EURCurrency;

     public Currency getEURCurrency() {
          ....
       return EURCurrency;
     }

和一个组件

  package tn.ett.medial.utils.dto;
    @Component
    public class ProductDTO implements Serializable {

        @Autowired
        ExchangeService exchangeService;

        public ProductDTO() {
        }

        public ProductDTO(Product product){

            System.out.println("service****" + exchangeService);
            Currency EURCurrency = exchangeService.getEURCurrency();
        }
      }

我在应用程序上下文中添加了组件扫描标签

 <context:component-scan base-package="tn.ett.medial" />

为什么exchangeService为null? (尽管当我将其注入到@Controller中时它可以工作).

解决方法:

由于这是一个DTO,我想您会做类似ProductDTO productDTO = new ProductDTO();的操作.
因此带注释的@Autowired ExchangeService为null,因为Spring不知道您使用new创建的ProductDTO副本,也不知道自动对其进行连线.

Some more info

上一篇:java简单的画图程序鼠标监听器


下一篇:java-jdk.incubator.httpclient中的NullPointerException