Предисловие
Javaconfig оказался подпроектом пружины. Он предоставляет информацию о определении бобов через классы Java. В версии Spring4 Javaconfig официально стал основной функцией Spring4.
Эта статья подробно расскажет о соответствующем контенте о конфигурации на основе классов Java весной. Я не скажу многое ниже. Давайте посмотрим на подробное введение вместе.
1 Определение Бин
Обычный POJO может предоставить информацию о определении бобов для весенних контейнеров, если аннотация @Configuration помечена.
@ConfigurationPublic Class SystemConfig { / ** * Определите фасоль и экземпляр * * @return * / @bean public userdao userdao () {return new userdao (); } @Bean public deptdao deptdao () {return new deptdao (); } / ** * Определите пользовательскую службу и вводите ранее определенные пользователи userdao и deptdao * * @return * / @bean public userservice userservice () {service userservice = new userservice (); service.setuserdao (userdao ()); Service.setDeptDao (deptDao ()); вернуть службу; }}Метод этого класса аннотирован аннотацией @Bean, то есть определить боб. Тип боба определяется типом возвращаемого значения метода. Имя по умолчанию на имя метода и имя метода. Вы также можете указать имя боба, введя параметр, такой как @bean (name = ”xxx»). Тело метода, отмеченное @Bean, предоставляет логику создавать бобы.
Приведенная выше конфигурация эквивалентна следующему XML:
<bean id = "userdao"/> <bean id = "deptdao"/> <bean id = "userservice" p: userdao-ref = "userdao" p: deptdao-ref = "deptdao"/>
По сравнению с методом конфигурации, основанным на классах Java, который основан на методе конфигурации на основе XML или аннотации -
Поскольку сам класс аннотаций @Configuration имеет @Component, эти классы могут быть введены в другие бобы, такие как обычные бобы.
@ConfigurationPublic Class ApplicationConfig {@Autowired Private SystemConfig SystemConfig; @Bean Public AuthorityService AuthorityService () {AuthorityService Service = New AuthorityService (); service.setuserdao (SystemConfig.userdao ()); Service.setDeptDao (SystemConfig.deptDao ()); вернуть службу; }}Spring использует улучшение AOP для всех методов, помеченных @Bean в классе конфигурации, вводя логику управления жизненным циклом бобов. Например, SystemConfig.userdao () выше, он возвращает синглтон, соответствующий бобам.
В @Bean мы также можем контролировать объем бобов, аннотируя аннотацию @Scope:
@Scope ("Прототип")@Beanpublic deptdao deptdao () {return new deptdao ();}Таким образом, каждый вызов в метод deptdao () вернет новый экземпляр:
assertnotsame (atomeralservice.getdeptdao (). hashcode (), atomerationservice.getdeptdao (). hashcode ());
ПРИМЕЧАНИЕ. Используйте классы на основе Java для конфигурации, пружины AOP и библиотеки CGLIB, должны быть включены в Classpath.
2 Запустите пружинный контейнер
2.1 Используйте только класс @configuration
Вы можете использовать конструктор класса AnnotationConfigApplicationContext для прохождения в классе Java, помеченной @Configuration, чтобы запустить пружинный контейнер.
ApplicationContext context = new AnnotationConfigApplicationContext (systemConfig.class); userservice userservice = (userservice) context.getbean ("userservice"); assertnotnull (userservice);Если есть несколько классов конфигурации @Configuration, вы можете зарегистрировать их в AnnotationConfigApplicationContext, а затем примените эти классы конфигурации, обновив контейнер:
Контекст Context = new AnnotationConfigApplicationContext (); // Зарегистрировать несколько классов конфигурации. Context.Gregister.
Вы также можете собрать несколько классов конфигурации в один класс конфигурации через @Import, а затем просто зарегистрировать собранный класс конфигурации, чтобы запустить контейнер:
@Configuration @import (SystemConfig.class) Public Class ApplicationConfig2 {@Autowired Private SystemConfig SystemConfig; @Bean Public AuthorityService AuthorityService () {AuthorityService Service = New AuthorityService (); service.setuserdao (SystemConfig.userdao ()); Service.setDeptDao (SystemConfig.deptDao ()); вернуть службу; }}ЕДИНЦИОННЫЕ Тесты:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext (ApplicationConfig2.class); ApplicationConfig2 config = context.getbean (ApplicationConfig2.class); AssertNotnull (config); final AuthorityService atomeralservice = config.AuthorityService (); assertNotnull (atomeralservice.getDeptDao ()); assertnotsame (atormityService.getDeptDao (). HashCode (), AuthorityService .getDeptDao (). HashCode ());
2.2 Использование файлов XML для обозначения конфигурации класса @Configuration
Класс конфигурации, помеченный @configuration, также является бобовым, поэтому его также можно отсканировать с помощью Prings's Context: Component-Scan>. Поэтому, если вы хотите собрать класс конфигурации в файл конфигурации XML и запустить пружину через файл конфигурации XML, вам нужно только сканировать соответствующий класс конфигурации через <context: component-scan> в XML.
<Контекст: компонент-сканирование Base-package = "net.deniro.spring4.conf" resource-pattern = "ApplicationConfig2.class" />
2.3 Конфигурация эталонных XML -файлов в классе @Configuration
В классе конфигурации @Configuration вы можете напрямую ввести файлы конфигурации XML через @ImporTresource, чтобы вы могли напрямую обратиться к бобам, определенным в файле конфигурации XML через @Autowired.
Файл конфигурации:
<bean id = "groupdao"/> <bean id = "roledao"/>
@Configuration class:
@ImporTresource ("classPath: Beans5-11.xml") @configurationpublic class serviceconfig {@bean @autowired publicalerservice servationservice (GroupDao GroupDao, Roledao Roledao) {SulteService Service = new Ofterserservice (); Service.setGroupDao (GroupDao); Service.setroledao (Roledao); вернуть службу; }}ЕДИНЦИОННЫЕ Тесты:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext (serviceConfig.class); serviceConfig config = context.getbean (serviceConfig.class); AssertNotnull (config); uptionservice service = config.roelatorservice ((группа) контекст. ("roledao")); assertnotnull (service.getroledao ());Пока информация об определении различных форм бобов может быть загружена в пружинные контейнеры, пружина может разумно завершить сборку между бобами.
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.