2015-12-01 3 views
0

Моя цель - использовать vaadin 7 и интегрировать его с Spring. Я не уверен, почему мой тривиальный бонус Jmessage является нулевым в классе UprintUI , но передает тест assertNotNull в мой модульный тест (см. Код ниже)?vaadin7 @Autowired имеет значение UU (работает на JUnit)

@Component 
public class Jmessage 
{ 
    @Value("Green") 
    private String baseColor; 

    public Jmessage() 
    { 
     System.out.println("\n\n--Jmessage was invoked \n\n"); 
    } 

    public String getBaseColor() 
    { 
     return baseColor; 
    } 

    public void setBaseColor(String baseColor) 
    { 
     this.baseColor = baseColor; 
    } 
} 

и на уровне пользовательского интерфейса:

@Theme("uprint") 
@SpringUI 
public class UprintUI extends UI 
{ 

    @Autowired 
    private Jmessage jmessage; 

    @Override 
    protected void init(VaadinRequest request) 
    {      
    if (jmessage!=null) //always null!!! 
     System.out.println(jmessage.getBaseColor()); 

    ... 
} 

приложение-контекст имеет

<context:annotation-config /> 
<context:component-scan base-package="com.uprint" /> 

Когда я активировать кота, вы можете увидеть сообщение от Jmessage Jmessage was invoked в консоли, но когда дело доходит до пользовательского интерфейса (UprintUI), оно равно нулю.

Теперь я пробовал это tutorial (от vaadin), и он работает. Они используют

@SpringComponent 
@UIScope 

Когда я помещаю эти обозначения в свой Jmessage - ничего, все равно null.

Любая идея, почему мои бобы нулевые?

Мой JUnit (работы)

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes=Jmessage.class) 
public class JmessageTest 
{ 
    @Autowired 
    private Jmessage jmessage; 

    @Test 
    public void jmessageNotNull() 
    { 
     assertNotNull(jmessage); 
    } 
} 
+0

Являются ли 'Jmessage' и' UprintUI' в пакете 'com.uprint' (или его дополнительным пакетом)? – DaveyDaveDave

+0

Какие пакеты у них? Это должно быть где-то упоминается атрибутом 'base-package =" com.uprint "' 'context: component-scan' – DaveyDaveDave

+0

, который находится по адресу: com.uprint.beans и пользовательскому интерфейсу в com.uprint.view – adhg

ответ

0

Там нет ничего, как мы не можем вводить фасоль в главном интерфейсе. Боб еще не готов в методе init().

есть другой метод и комментируют это с помощью @postconstuct, который весна вызывается после инициализации пользовательского интерфейса и проверяет объект. он не должен быть нулевым в то время.

Смежные вопросы