2013-07-08 1 views
0

Я использую CustomerDTO:Реализация Null объекта проектирования Узор в Spring фасолью

public class CustomerDTO { 

    private int customerId; 
    private String customerName; 
    private String customerAddress; 
    public int getCustomerId() { 
     return customerId; 
    } 
    public void setCustomerId(int customerId) { 
     this.customerId = customerId; 
    } 
    public String getCustomerName() { 
     return customerName; 
    } 
    public void setCustomerName(String customerName) { 
     this.customerName = customerName; 
    } 
    public String getCustomerAddress() { 
     return customerAddress; 
    } 
    public void setCustomerAddress(String customerAddress) { 
     this.customerAddress = customerAddress; 
    } 

} 

Тогда я использую CustomerDAO где я выборка клиента на основе CUSTOMERID

public class CustomerDAO { 
    private CustomerDTO customer; 

    public void setCustomer(CustomerDTO customer) { 
     this.customer = customer; 
    } 

    public CustomerDTO getCustomer(int customerId){ 
     try{ 
      if("you get customer based on customer id") then "return the customer"; 
     }catch(Exception ex){ 
      return new CustomerDTO(); 
       //some other work 
     } 
    } 
} 

Сейчас этот код new CustomerDTO(); в CustomerDAO дает null, когда я пытаюсь получить доступ к new CustomerDTO().getCustomerName(). Я думаю об инициализации поля со значениями по умолчанию.

Как я могу достичь этого с/без пружинного каркаса?

ответ

2

Попробуйте с весной

@Value("myValue") 
String customerName; 

И без пружины, просто присвоить значение в самой декларации,

private String customerName="myValue"; 
+0

Да, просто инициализировать поле в самой декларации. –

+0

Спасибо за предложение, но он дает null. Я уже пробовал это с помощью spring.xml и теперь с аннотацией. Я думаю, что возможная проблема заключается в том, что когда я делаю 'new CustomerDTO()', тогда компонент не инициализируется весенним контейнером. Пожалуйста, исправьте меня, если я ошибаюсь – ritesh

+1

@ritesh yes, 'new CustomerDTO()' просто создать экземпляр компонента напрямую, не используя весну. но если вы присвоите значение по умолчанию, оно никогда не вернет значение null. здесь вы не используете весну. весной вам нужно создать экземпляр через '_springContext.getBean (beanName)' – iMBMT