Используйте аннотации для построения контейнеров МОК
Используйте аннотации, чтобы зарегистрировать бобы с помощью весенних контейнеров. Необходимо зарегистрироваться в ApplicationContext.xml <контекст: компонент-сканирование Base-package = ”pagkage1 [, pagkage2,…, pagkagen]”/>.
Например: укажите пакет в базовой упаковке
<Контекст: компонент-сканирование Base-package = "cn.gacl.java"/>
Указывает, что если класс имеет определенную аннотацию [@component/@Repository/@service/@Controller] в пакете cn.gacl.java и его подпакера, этот объект будет зарегистрирован в пружинном контейнере в качестве боба. Вы также можете указать несколько пакетов в <контекста: компонент-сканирование base-package = ""/>, например:
<контекст: компонентный сканирование Base-package = "cn.gacl.dao.impl, cn.gacl.service.impl, cn.gacl.action"/>
Несколько пакетов разделены запятыми.
1. @component
@Component
Это общая форма для всех управляемых весенних компонентов. Аннотация @Component может быть размещена на голове класса, и @Component не рекомендуется.
2. @controller
@Controller соответствует бобам уровня презентации, то есть действием, например:
@Controller @scope ("Прототип") открытый класс пользователь Extens Baseaction <user> {...}После использования аннотации @Controller для идентификации пользователя, это означает, что пользовательский фактор должен быть передан в пружинный контейнер для управления. В пружинном контейнере будет действие с именем «Пользовательское действие». Это имя принимается на основе имени класса пользователя. ПРИМЕЧАНИЕ. Если @Controller не указывает его значение 【@controller】, имя бобов по умолчанию является строчным в первой букве имени класса. Если вы указываете значение 【@controller (value = "userAction")】 или 【@Controller ("userAction")】, то используйте значение в качестве имени боба.
Пользовательская работа также использует аннотацию @Scope. @Scope («Прототип») означает, что объем действия объявляется прототипом. Вы можете использовать Scope = «Прототип» контейнера, чтобы убедиться, что каждый запрос имеет отдельное действие для его обработки, избегая проблем безопасности потока действий в стойках. Spring Основной областью по умолчанию является режим Singleton (Scope = "Singleton"), который создаст только объект действия. Каждый доступ - один и тот же объект действия. Данные небезопасны. Struts2 требует, чтобы каждый доступ соответствовал различному действию. Scope = "Prototype" может гарантировать, что объект действия создается при запросе.
3. @ Сервис
@Service соответствует сервисному бону, например:
@Service ("userservice") открытый класс userserviceimpl реализует userservice {……}@Service ("userservice") аннотация сообщает Spring, что когда Spring хочет создать экземпляр userserviceimpl, имя боба должно называться «пользовательский сервис». Таким образом, когда действие необходимо использовать экземпляр пользователя userserviceimpl, «пользовательский сервис», созданный Spring, может быть введен в действие: в действии вам необходимо объявить переменную с именем «пользовательский сервис» для получения «пользовательского обслуживания», введенной в весну. Конкретный код заключается в следующем:
// Inject userservice @resource (name = "userservice") private userservice userservice;
ПРИМЕЧАНИЕ. Тип переменной «пользовательский сервис», объявленная в действии, должен быть «userServiceImpl» или ее родительским классом «пользовательский сервис», в противном случае она не может быть введена из -за противоречивых типов. Потому что заявленная переменная «пользователь -сервис» в действии использует аннотацию @Resource и указывает на его имя = «пользовательский сервис», что эквивалентно сообщению Spring, что я хочу создать «пользовательский сервис». Весна поможет мне быстро его создавать, а затем отдать мне. Когда Spring видит аннотацию @Resource на переменной пользовательского обслуживания, согласно указанному атрибуту имени, вы можете знать, что в действии необходимо использовать экземпляр пользовательского обслуживания. В настоящее время Spring внедрит экземпляр пользователя userServiceImpl, называемый «пользовательский сервис», в переменную «пользовательский сервис» в действие, чтобы помочь действию завершить экземпляры пользовательского обслуживания, поэтому в действии нет необходимости использовать «userservice userservice = new userserviceImpl ()»; Это самый примитивный способ создания пользовательского обслуживания.
Если весна нет, когда действие необходимо для использования userserviceimpl, вы должны активно создавать объект экземпляра через «userservice userservice = new userserviceimpl ();». Однако после использования Spring, когда Action хочет использовать userserviceImpl, вам не нужно активно создавать экземпляр пользовательского обслуживания. Создание экземпляра userserviceimpl было передано весне. Spring придает созданному экземпляру userserviceimpl в действие, и вы можете использовать его непосредственно после того, как вы получите действие.
Действие может быть использовано сразу после активного создания экземпляра userserviceimpl, но пассивно ожидает, когда Spring создает экземпляр пользователя SpearingImpl, прежде чем вводить его в действие.
Это показывает, что «управление» действием над классом «пользовательсервейсеймпл» был «изменен». Оказывается, инициатива в моих руках. Я должен использовать экземпляр класса «userserviceimpl». Я могу принять инициативу, чтобы использовать ее немедленно. Но теперь я не могу взять на себя инициативу к новым экземплярам класса «пользовательская erviceimpl». Мощность нового экземпляра класса «пользовательская erviceimpl» была забрана к весне. Только Spring могут новые экземпляры «пользовательской экземпляр класса», и действие может только подождать, пока Spring создаст класс «пользователи» после экземпляра класса rviceimpl «пожалуйста», пожалуйста, дайте ему созданный экземпляр «пользовательсерскую» класса », чтобы он мог использовать« пользовательскую консервативную ». Это основная идея« Внутренняя инвентация », и это также вызвано« Зависимость ». Внедрение« Зависимость ». Пользовательская служба для работы, поэтому он создает зависимость от пользовательских пружин, которые должны зависеть от пользователя.
4. @ Repository
@Repository соответствует, например, на основе уровня доступа к данным:
@RepoSitory (value = "userDao") открытый класс userDaoImpl Extends foundAoImpl <user> {………}Аннотация @Repository (value = "userDao") говорит Spring, чтобы Spring создал экземпляр userDaoImpl с именем "userDao".
Когда служба необходимо использовать экземпляр userDaoImpl с именем «userDao», созданный Spring, вы можете использовать аннотацию @Resource (name = "userDao"), чтобы сообщить Spring, а Spring может внедрить созданный пользовательдао в службу.
// Inject userDao, и при получении указанного пользователя из базы данных в соответствии с идентификатором пользователя вам необходимо использовать @Resource (name = "userDao") private basedao <user> userDao;
@Resource, @Autowired и @qualifier используются для впрыскивания объектов. Среди них @Resource может быть введен в название или тип, @Autowired может быть введен только в тип, а @qualifier может быть введен только во имя.
Но у них есть некоторые тонкие различия:
1. @resource и @qualifier автоматически вводится по умолчанию Byname, а @autowired автоматически вводится Bytype по умолчанию.
2. @Resource имеет два свойства, которые более важны, имя и тип. Если используется атрибут имени, используется автоматическая политика впрыска ByName. При использовании атрибута типа используется политика автоматического впрыска BYTYPE.
3.
Вы можете относиться к @Resource как боссом @autowired @qualifier, ха -ха. У меня есть то, что у тебя есть, и у меня есть то, чего у тебя нет, и у меня тоже есть ~
@Resource, @Autowired и @qualifier используются для впрыскивания объектов. Среди них @Resource может быть введен в название или тип, @Autowired может быть введен только в тип, а @qualifier может быть введен только во имя.
Но у них есть некоторые тонкие различия:
1. @resource и @qualifier автоматически вводится по умолчанию Byname, а @autowired автоматически вводится Bytype по умолчанию.
2. @Resource имеет два свойства, которые более важны, имя и тип. Если используется атрибут имени, используется автоматическая политика впрыска ByName. При использовании атрибута типа используется политика автоматического впрыска BYTYPE.
3.
Вы можете относиться к @Resource как боссом @autowired @qualifier, ха -ха. У меня есть то, что у тебя есть, и у меня есть то, чего у тебя нет, и у меня тоже есть ~
Вышеуказанные общие пружинные аннотации Метод использования аннотаций для построения контейнеров МОК - это все контент, которым я поделился с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.