Что касается весны @подгружен и калитки по @SpringBean


В настоящее время я изучаю интеграцию Mockito и JUnit в мой проект Wicket/Spring/Hibernate и нашел учебник о том, как это сделать с помощью аннотаций.

Проблема в том, что я не знаком с @Autowired, и после просмотра google мне трудно увидеть разницу между этой аннотацией и аннотацией @SpringBean.

Являются ли они одним и тем же или есть разница, о которой я должен знать ?

Мой код, чтобы предложить некоторый контекст для этого вопрос:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
@TransactionConfiguration(transactionManager = "txManager", defaultRollback = false) 
public class TestHome
{
private WicketTester tester;

@Autowired
private ApplicationContext ctx;

@Autowired
private WebApplication webApplication;

@Before
public void setUp() {
    tester = new WicketTester(webApplication);
}

@Test
@Transactional
@Rollback(true)
public void testRenderHomePage() {
    tester.startPage(Home.class);
    tester.assertRenderedPage(Home.class);
    tester.assertComponent("home", Home.class);
}

}
1 3

1 ответ:

Если вы используете Wicket Spring Componentinjector,он использует свою собственную инъекцию. Аннотация @Autowired является аннотацией Springframework, но Wicket SpringComponentInjector игнорирует это. Таким образом, аннотацией калитки является @SpringBean, который отмечает поле, которое будет автоматически подключено (введено) Spring bean или компонентом, который должен существовать в контексте Spring.

В вашем фрагменте кода Вы используете springjunit4classrunner runner, поэтому ваши поля вводятся Spring, поэтому это правильно.

Смотрите пример, как чтобы использовать SpringComponentInjector в Как я могу получить Spring bean, введенный в мой пользовательский класс модели калитки?