Как вы используете аннотации стереотипов в Spring 2.5.x? - PullRequest
11 голосов
/ 27 марта 2010

При переходе на Spring 2.5.x я обнаружил, что он добавляет больше стереотипных аннотаций (поверх @ Repository из 2.0): @ Component, @ Service и @ контроллер . Как вы их используете? Вы полагаетесь на неявную поддержку Spring или определяете пользовательские стереотипные функции / аспекты / функции? Или это преимущественно для маркировки bean-компонентов (время компиляции, концептуальное и т. Д.)?

Ответы [ 3 ]

13 голосов
/ 27 марта 2010

Следующие аннотации стереотипа в 2.5 могут использоваться в приложении Spring MVC в качестве альтернативы подключению компонентов в XML:

  • @ Репозиторий - для бобов DAO - позволяет вам бросить DataAccessException, когда источник данных недоступен.

  • @ Сервис - для деловых бобов - довольно простые бобы, которые имеют некоторые политики хранения по умолчанию.

  • @ Контроллер - для сервлетов - позволяет настроить запрос страницы отображения и т. д.

Кроме того, введена общая четвертая аннотация: @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";
    }
}

Я нашел эту статью очень полезной для широкого обзора аннотаций стереотипа, в дополнение к официальной документации .

3 голосов
/ 30 марта 2010

Аннотации больше не относятся к MVC. См. справочную документацию для получения дополнительной информации. Примером использования аннотации @Component или ее спецификации является tcServer с поддержкой мониторинга. См. здесь для примера. Эта поддержка мониторинга добавляется при загрузке AspectJ во время загрузки.

Подводя итог, аннотации можно использовать в разных настройках во время выполнения после запуска контейнера Spring или во время компиляции / загрузки с использованием AspectJ.

0 голосов
/ 30 марта 2010

не забудьте добавить этот тег на xml

    <context:component-scan  base-package="com.example.beans"/> 
...