1. Используйте аннотации:
В Spring's Configuration File ApplicationContext.xml добавьте сканирование аннотации. Элемент конфигурации настраивает сканирование указанных пакетов для реализации инъекции зависимости.
<? xml version = "1.0" Encoding = "utf-8"?> <span style = "font-size: 18px;"> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.cemememememersem. xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.springframework.org/schema/aop" xsi: schemalocation = "http://www.springframe.orshema.orshema.orshema.orshema. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.x.x.x.x.x.x.x.x.x.spramework.org/schema/context/spring-3.0.x.x. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/spring-3.0.xssd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <aop: compriceJ-autoproxy/> <context: annotation-config/> <context: componcent-scan-scan-scan-scan-scan-scan-scan-scane. // где сканировать </фасоль>
2. Общие комментарии:
@Controller@service@autowired@requestmapping@requestparam@modelattribute@cachable@cacheflush@resource@postconstruct@preadestroy@Repository@component (не рекомендуется)@scope@sessionattributes@initbinder@repositier@Qualifier
3. Обычно используемые пружинные аннотации:
@Controller (для презентационного слоя)
После использования аннотации @Controller для идентификации пользователя, это означает, что пользовательский фактор должен быть передан в пружинный контейнер для управления. В пружинном контейнере будет действие с именем «Пользовательское действие». Это имя принимается на основе имени класса пользователя. ПРИМЕЧАНИЕ. Если @Controller не указывает его значение 【@controller】, имя бобов по умолчанию является строчным в первой букве имени класса. Если вы указываете значение 【@controller (value = "userAction")】 или 【@Controller ("userAction")】, то используйте значение в качестве имени боба.
Пользовательская работа также использует аннотацию @Scope. @Scope («Прототип») означает, что объем действия объявляется прототипом. Вы можете использовать Scope = «Прототип» контейнера, чтобы убедиться, что каждый запрос имеет отдельное действие для его обработки, избегая проблем безопасности потока действий в стойках. Spring Основной областью по умолчанию является режим Singleton (Scope = "Singleton"), который создаст только объект действия. Каждый доступ - один и тот же объект действия. Данные небезопасны. Struts2 требует, чтобы каждый доступ соответствовал различному действию. Scope = "Prototype" может гарантировать, что объект действия создается при запросе.
@Controller
@Scope ("Прототип") открытый класс пользователь Extens Baseaction <user> {}@ Service (используется в слое бизнес -логики)
Обратите внимание, что аннотация @Service используется в классе реализации интерфейса службы, а не в интерфейсе.
Это очень хорошо отражает контрольную инверсию весной. Мы не позволяем объекту создавать самостоятельный объект и активно полагаться на объект, а вместо этого используем контейнер для создания объекта, который управляется МОК. Пример:
Когда Action хочет использовать userserviceimpl, вам не нужно активно создавать экземпляр пользователя userserviceimpl. Создание экземпляра userserviceimpl было передано весне. Spring дает созданному экземпляру userserviceimpl для действия, и вы можете использовать его сразу после того, как вы получите действие. Действие может быть использовано сразу после активного создания экземпляра userserviceimpl, но пассивно ожидает, когда Spring создает экземпляр пользователя SpearingImpl, прежде чем вводить его в действие. Это показывает, что «управление» действием над классом «пользовательсервейсеймпл» был «изменен». Оказывается, инициатива в моих руках. Я должен использовать экземпляр класса «userserviceimpl». Я могу принять инициативу, чтобы использовать ее немедленно. Но теперь я не могу взять на себя инициативу к новым экземплярам класса «пользовательская erviceimpl». Мощность нового экземпляра класса «пользовательская erviceimpl» была забрана к весне. Только Spring могут новые экземпляры «пользовательской экземпляр класса», и действие может только подождать, пока Spring создаст класс «пользователи» после экземпляра класса rviceimpl «пожалуйста», пожалуйста, дайте ему созданный экземпляр «пользовательсерскую» класса », чтобы он мог использовать« пользовательскую консервативную ». Это основная идея« Внутренняя инвентация », и это также вызвано« Зависимость ». Внедрение« Зависимость ». Пользовательская служба для работы, поэтому он создает зависимость от пользовательских пружин, которые должны зависеть от пользователя.
@Service ("userservice") открытый класс пользователи urserviceimpl реализует userservice {}@ Repository (для управления данными)
Автор использует инструмент для генерации модели данных и Mapper Data Pountry Layer в обратном направлении, поэтому эта аннотация не используется, но это просто вводит фасоль в пружинный контейнер.
@RepoSitory (value = "userDao") открытый класс userDaoImpl Extends foundAoImpl <user> {}4. Обычно используемые аннотации SpringMVC:
@Autowired (вводится типом)
Аннотировать переменные члена класса, методы и конструкторы, чтобы завершить работу автоматической сборки. Проще говоря, это позвонить в бобы и сказать Spring, что он существует и управляется в контейнере.
@Autowired Поиск из весенней онлайн -статьи в соответствии с типом бобов. Тип регистрации должен быть уникальным, в противном случае будет сообщено об исключении.
Когда аннотация @autowired действует на типе карты, если ключом карты является тип строки, пружина добавит все типы в контейнере в соответствующий тип значения карты, и использовать идентификатор или имя боба в качестве ключа карты.
@Autowired Другая функция заключается в том, что если она аннотирована на типе BeanFactory, тип приложения, тип ресурса -загрузчика, тип ApplicationEvontpublisher и тип сообщений, Spring автоматически вводит экземпляры этих классов реализации без дополнительных операций.
@Autowired
Частный IreportService Reportservice;
@Resource (вводятся по имени)
Подобно @autowired, @Resource поиски по умолчанию в соответствии с именем бобов. Если это не найдено, он будет искать по типу.
@Ресурс
Частный дат данных; // внедрять фасоль с именем 'DataSource'
@Resource (name = "dataSource")
@Resource (type = dataSource.class)
Расширенный вопрос: что такое сборка по типу и что такое сборка по имени?
По типу означает, что когда есть боб с тем же типом, что и указанный атрибут в пружинном контейнере, атрибут будет автоматически собран; Если есть несколько бобов такого типа, будет запущено исключение, и указывается, что автоматическая сборка по типу не может быть использована; Если не найдено соответствующих бобов, ничего не произойдет.
Так называемое имя означает автоматическую сборку на основе имени атрибута. Этот элемент проверит бобы в пружинном контейнере, которые точно такие же, как и имя атрибута, и выполнять автоматическую сборку.
@Requestmapping (адрес запроса карты)
Аннотации, используемые для обработки запрошенных отображений адресов, могут использоваться на классах или методах. Для использования в классе все методы, которые представляют эти запросы ответа в классе, принимают этот адрес как родительский путь.
Есть шесть атрибутов, а именно:
1. Значение, метод;
Значение: указывает фактический адрес запроса, и указанный адрес может быть в режиме шаблона URI (который будет объяснен позже);
Метод: укажите запрошенный тип метода, get, post, put, delete и т. Д.;
2. Поглощает, производит
Потребители: указывает тип отправки (тип контента), который обрабатывает запрос, такой как приложение/JSON, Text/HTML;
Производит: указывает возвращаемый тип контента, который будет возвращен только в том случае, если тип (принять) в заголовке запроса запроса содержит указанный тип;
3. Params, заголовки
PARAMS: указывает, что запрос должен содержать определенные значения параметров, прежде чем метод может быть обработан.
Заголовки: указывает, что запрос должен содержать некоторые указанные значения заголовков, чтобы метод обрабатывал запрос.
@Controller@requestMapping ("/bbtforum.do") public class bbtforumcontroller {@requestmapping (params = "method = listboardtopic") public String listboardtopic (int tomaid, пользователь пользователь) {}}@requestmapping ("/softpg/downsoftpg.do")@requestMapp method = requestmethod.post) @requestmapping (value = "/osu/product/detail.do", params = {"modify = false"}, method = requestmethod.post)@RequestParam (получить значение параметра запроса)
Например, наш адрес доступа в браузере: Localhost: 8080/Hello? ID = 1000, и мы получаем значение идентификатора, например:
@Restcontrollerpublic class hellocontroller {@requestmapping (value = "/hello", method = requestmethod.get) public String sayshello (@RequestParam ("id") INTEGER ID) {return "ID:"+id; }}@Pathvaribale (получить данные в URL)
@Restcontrollerpublic class hellocontroller {@requestmapping (value = "/hello/{id}", method = requestmethod.get) public String sayshello (@pathvariable ("id") integer id) {return "id:"+id; }}@ResponseBody (вернуть тип JSON)
Функция: Эта аннотация используется для преобразования объекта, возвращаемого методом контроллера в указанный формат через соответствующий httpmessageConverter и записать его в область данных тела объекта ответа.
Время для использования: возвращаемые данные не являются страницей с тегом HTML, но используются, когда данные в каком -то другом формате (например, JSON, XML и т. Д.);
Суммировать
Выше приведено анализ общих аннотаций в Spring Springmvc, введенных вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!