При перемещении в Spring 2.5.x я нашел, что он добавляет больше стереотипных аннотаций (сверху @Repository от 2,0): @Component, @Service и @Controller. Как Вы используете их? Вы полагаетесь на неявную Пружинную опору, или Вы определяете пользовательский стереотип определенные функции/аспекты/функции? Или это преимущественно для маркировки бобов (время компиляции, концептуальное, и т.д.)?
Следующие стереотипные аннотации в 2.5 могут использоваться в приложении Spring MVC в качестве альтернативы связыванию bean-компонентов в XML:
@Repository - для bean-компонентов DAO - позволяет генерировать исключение DataAccessException, когда {{ 1}} источник данных недоступен.
@Service - для бизнес-компонентов - - это довольно простые компоненты, для которых настроены некоторые политики хранения по умолчанию.
@Controller - для сервлетов - позволяет настраивать сопоставления запросов страниц и т. Д.
Кроме того, была введена общая четвертая аннотация: @Component. Все аннотации MVC являются специализациями этой, и вы даже можете использовать @Component самостоятельно, хотя, делая это в Spring MVC, вы не будете использовать какие-либо будущие оптимизации / функциональные возможности, добавленные к аннотациям более высокого уровня. Вы также можете расширить @Component, чтобы создать свои собственные стереотипы.
Вот краткий пример аннотаций MVC в действии ... Во-первых, объект доступа к данным:
@Repository
public class DatabaseDAO {
@Autowired
private SimpleJdbcTemplate jdbcTemplate;
public List<String> getAllRecords() {
return jdbcTemplate.queryForObject("select record from my_table", List.class);
}
}
Служба:
@Service
public class DataService {
@Autowired
private DatabaseDAO database;
public List<String> getDataAsList() {
List<String> out = database.getAllRecords();
out.add("Create New...");
return out;
}
}
И, наконец, контроллер:
@Controller("/index.html")
public class IndexController {
@Autowired
private DataService dataService;
@RequestMapping(method = RequestMethod.GET)
public String doGet(ModelMap modelMap) {
modelMap.put(dataService.getDataAsList());
return "index";
}
}
Я нашел эту статью очень хорош для предоставления широкого обзора стереотипных аннотаций в дополнение к официальной документации .
Аннотации больше не относятся к MVC. Дополнительную информацию см. В справочной документации . Примером использования аннотации @Component или ее спецификации является tcServer с поддержкой мониторинга. См. Пример здесь . Эта поддержка мониторинга добавлена с ткачеством AspectJ во время загрузки.
Подводя итог, можно сказать, что аннотации могут использоваться в различных настройках во время выполнения после запуска контейнера Spring или во время компиляции / загрузки с переплетением AspectJ.
не забудьте добавить этот тег в xml
<context:component-scan base-package="com.example.beans"/>