Сообщения

Показаны сообщения с ярлыком "CustomAutowireConfigurer"

Spring IoC контейнер: конфигурация на основе аннотаций, @PostConstruct и @PreDestroy

Изображение
CommonAnnotationBeanPostProcessor распознает не только аннотацию @Resource, но и аннотации жизненного цикла JSR-250: javax.annotation.PostConstruct и javax.annotation.PreDestroy. Представленная Spring 2.5, поддержка этих аннотаций предлагает альтернативу механизму обратного вызова жизненного цикла, описанному в обратных вызовах инициализации и обратных вызовах уничтожения . При условии, что CommonAnnotationBeanPostProcessor зарегистрирован в Spring ApplicationContext, метод, содержащий одну из этих аннотаций, вызывается в той же точке жизненного цикла, что и соответствующий метод интерфейса жизненного цикла Spring или явно объявленный метод обратного вызова. В следующем примере кэш предварительно заполняется при инициализации и очищается при уничтожении: Java public class CachingMovieLister { @PostConstruct public void populateMovieCache() { // заполняет кэш фильма при инициализации... } @PreDestroy public void clearMovieCache() { // очищает ...

Spring IoC контейнер: конфигурация на основе аннотаций, @Value

Изображение
@Value обычно используется для внедрения внешних свойств: Java @Component public class MovieRecommender { private final String catalog; public MovieRecommender(@Value("${catalog.name}") String catalog) { this.catalog = catalog; } } Kotlin @Component class MovieRecommender(@Value("\${catalog.name}") private val catalog: String) Со следующей конфигурацией: Java @Configuration @PropertySource("classpath:application.properties") public class AppConfig { } Kotlin @Configuration @PropertySource("classpath:application.properties") class AppConfig И следующий файл application.properties: catalog.name=MovieCatalog В этом случае параметр и поле каталога будут равны значению MovieCatalog. Spring предоставляет встроенный преобразователь значений снисхождения. Он будет пытаться разрешить значение свойства, и, если оно не может быть разрешено, имя свойства (например, ${catalog.name}) будет введено в ...

Spring IoC контейнер: конфигурация на основе аннотаций, @Resource

Изображение
Spring также поддерживает внедрение с помощью аннотации JSR-250 @Resource (javax.annotation.Resource) для полей или методов установки свойств бина. Это общий шаблон в Java EE: например, в управляемых JSF bean-компонентах и конечных точках JAX-WS. Spring поддерживает этот шаблон и для объектов, управляемых Spring. @Resource принимает атрибут name. По умолчанию Spring интерпретирует это значение как имя bean-компонента для внедрения. Другими словами, это следует за семантикой имени, как продемонстрировано в следующем примере: Java public class SimpleMovieLister { private MovieFinder movieFinder; @Resource(name="myMovieFinder") public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } } Kotlin class SimpleMovieLister { @Resource(name="myMovieFinder") private lateinit var movieFinder:MovieFinder } Если имя не указано явно, имя по умолчанию выводится из имени поля или метода установки. ...

Spring IoC контейнер: конфигурация на основе аннотаций, использование CustomAutowireConfigurer

Изображение
CustomAutowireConfigurer - это BeanFactoryPostProcessor, который позволяет регистрировать собственные типы аннотаций квалификаторов, даже если они не аннотированы аннотацией Spring @Qualifier. В следующем примере показано, как использовать CustomAutowireConfigurer: <bean id="customAutowireConfigurer" class="org.springframework.beans.factory.annotation.CustomAutowireConfigurer"> <property name="customQualifierTypes"> <set> <value>example.CustomQualifier</value> </set> </property> </bean> AutowireCandidateResolver определяет кандидатов для автоматической привязки по: Значение autowire-candidate каждого определения бина Любые шаблоны default-autowire-candidates, доступные в элементе <beans/> Наличие аннотаций @Qualifier и любых пользовательских аннотаций, зарегистрированных в CustomAutowireConfigurer Когда несколько bean-компонентов квалифицируются к...