Я изучаю эту книгу (которую я очень рекомендую), и я смущен тем, как авторы объясняют, как можно настроить структуру Spring.
Вы можете увидеть примеры кода, которые используются в книге здесь. (Они доступны всем..) Код, который я имею в виду, будет кодом из главы 2, если вы хотите взглянуть.
В любом случае в книге указано, что существует 3 способа настройки контейнера Spring.
Конфигурация на основе XML
Для этого потребуется xml файл, похожий на что-то вроде этого:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" ...>
<bean id="accountService" class="com.wiley.beginningspring.ch2.AccountServiceImpl">
<property name="accountDao" ref="accountDao"/>
</bean>
<bean id="accountDao" class="com.wiley.beginningspring.ch2.AccountDaoInMemoryImpl">
</bean>
</beans>
А затем, чтобы загрузить bootstrap Spring, код, который будет использоваться, будет:
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("/com/wiley/beginningspring/ch2/ch2-beans.xml");
В настоящий момент у меня нет путаницы.
Конфигурация на основе Java
В этом Способе конфигурации будет класс для конфигурации следующим образом:
@Configuration
public class Ch2BeanConfiguration {
@Bean
public AccountService accountService() {
AccountServiceImpl bean = new AccountServiceImpl();
bean.setAccountDao(accountDao());
return bean;
}
@Bean
public AccountDao accountDao() {
AccountDaoInMemoryImpl bean = new AccountDaoInMemoryImpl();
return bean;
}
}
и код, который отвечает за загрузку Spring, выглядит так:
ApplicationContext applicationContext
= new AnnotationConfigApplicationContext(Ch2BeanConfiguration.class);
Итак, все здесь ясно для меня. (Вид..) Я также хотел бы отметить, что здесь у нас есть аннотация, которая называется @Configuration...
Конфигурация на основе аннотаций
Последний доступный метод конфигурации, описанный в книге, - это Конфигурация на основе аннотаций.
Существует XML файл, как и в XML-конфигурации, однако гораздо меньше:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" ...>
<context:component-scan base-package="com.wiley.beginningspring.ch2"/>
</beans>
Все beans имеют аннотации, такие как:
@Component, @Service
и т.д..
И все зависимости имеют аннотации:
@Autowired
чтобы beans мог быть введен.
Способ Spring, загруженный в этот способ настройки, выглядит следующим образом:
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("/ch2-beans.xml");
Вот мои вопросы:
Почему (так называемая) настройка на основе аннотаций фактически использует ClassPaспасибоmlApplicationContext, но не AnnotationConfigApplicationContext выше? Последнее кажется гораздо более подходящим для использования в конфигурации, в которой есть слова "Аннотации, основанные", не так ли?
Конфигурация на основе Java, описанная в книге, похоже на то, что должно называться Конфигурация на основе аннотаций.
И метод, описанный в книге, описанный в книге, фактически мне кажется чем-то вроде: Конфигурация на основе XML с Autowired beans. У него даже нет аннотации @Configuration, которая имеет "Конфигурация на Java".
Сколько способов настроить фреймворк Spring?