Что касается весны @подгружен и калитки по @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 ответ:
Если вы используете Wicket Spring Componentinjector,он использует свою собственную инъекцию. Аннотация @Autowired является аннотацией Springframework, но Wicket SpringComponentInjector игнорирует это. Таким образом, аннотацией калитки является @SpringBean, который отмечает поле, которое будет автоматически подключено (введено) Spring bean или компонентом, который должен существовать в контексте Spring.
В вашем фрагменте кода Вы используете springjunit4classrunner runner, поэтому ваши поля вводятся Spring, поэтому это правильно.
Смотрите пример, как чтобы использовать SpringComponentInjector в Как я могу получить Spring bean, введенный в мой пользовательский класс модели калитки?