Как вы используете аннотации стереотипов в Spring 2.5.x?

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

Ответ 1

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

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

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

  • @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";
    }
}

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

Ответ 2

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

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

Ответ 3

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

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