S🕶
Size: a a a
S🕶
S🕶
S🕶
@Bean(name = "conversionService")
@Primary
public ConversionService getConversionService(List<Converter> converters) {
ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
factory.setConverters(new HashSet<>(converters));
factory.afterPropertiesSet();
return factory.getObject();
}
RS
@Bean(name = "conversionService")
@Primary
public ConversionService getConversionService(List<Converter> converters) {
ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
factory.setConverters(new HashSet<>(converters));
factory.afterPropertiesSet();
return factory.getObject();
}
get*
. Это не геттеры. Это фабрики бинов по сути. И название метода по умолчанию будет названием бина. У вас оно переопределено в аннотации, но зачем? можно же просто назвать метод conversionService
, а не getConversionService
. Это конечно ни на что не влияет, но просто так принято. Нет смысла делать иначе.ConversionServiceFactoryBean
(как и любой другой FactoryBean
) не предназначен для такого использования. В крайнем случае можно создать отдельный бин для него, т.е. вернуть из метода не ConversionService
, а прямо ConversionServiceFactoryBean
- и спринг сам создаст ConversionService
, вызвав getObject()
, когда ему нужно будет куда-то заинжектить бин ConversionService
(проинициализировав при этом FactoryBean
, так что не нужны будут хаки в виде factory.afterPropertiesSet()
).FactoryBean
- классы в основном предназначены для использования из XML-конфигурации спринга. В Java-конфигурации они просто не нужны, т.к. можно создавать объекты с любым скоупом напрямую. Да собственно прямо в жавадоках класса ConversionServiceFactoryBean
написано "Like all FactoryBean implementations, this class is suitable for use when configuring a Spring application context using Spring <beans> XML. When configuring the container with @Configuration classes, simply instantiate, configure and return the appropriate ConversionService object from a @Bean method.".conversionService
. По-умолчанию бут использует бин с таким именем для биндинга пропертей из application.properties. Если в контектсе он не находит бина с таким именем, он создает его сам и добавляет туда дефолтные конвереты, которые, например, преобразуют строку 5s
в объект Duration
со значением 5 секунд и делают некоторые другие полезные штуки. Если же он возьмет из контекста ваш conversionService
, то там будут только те конвертеры, которые вы туда добавили плюс дефолтные конвертеры из DefaultConversionService
. А дефолтных от спринг-бут не будет. Так что лучше от греха подальше назвать свой СonversionService, предназначенный для использования программно в приложении, как-то иначе.S🕶
get*
. Это не геттеры. Это фабрики бинов по сути. И название метода по умолчанию будет названием бина. У вас оно переопределено в аннотации, но зачем? можно же просто назвать метод conversionService
, а не getConversionService
. Это конечно ни на что не влияет, но просто так принято. Нет смысла делать иначе.ConversionServiceFactoryBean
(как и любой другой FactoryBean
) не предназначен для такого использования. В крайнем случае можно создать отдельный бин для него, т.е. вернуть из метода не ConversionService
, а прямо ConversionServiceFactoryBean
- и спринг сам создаст ConversionService
, вызвав getObject()
, когда ему нужно будет куда-то заинжектить бин ConversionService
(проинициализировав при этом FactoryBean
, так что не нужны будут хаки в виде factory.afterPropertiesSet()
).FactoryBean
- классы в основном предназначены для использования из XML-конфигурации спринга. В Java-конфигурации они просто не нужны, т.к. можно создавать объекты с любым скоупом напрямую. Да собственно прямо в жавадоках класса ConversionServiceFactoryBean
написано "Like all FactoryBean implementations, this class is suitable for use when configuring a Spring application context using Spring <beans> XML. When configuring the container with @Configuration classes, simply instantiate, configure and return the appropriate ConversionService object from a @Bean method.".conversionService
. По-умолчанию бут использует бин с таким именем для биндинга пропертей из application.properties. Если в контектсе он не находит бина с таким именем, он создает его сам и добавляет туда дефолтные конвереты, которые, например, преобразуют строку 5s
в объект Duration
со значением 5 секунд и делают некоторые другие полезные штуки. Если же он возьмет из контекста ваш conversionService
, то там будут только те конвертеры, которые вы туда добавили плюс дефолтные конвертеры из DefaultConversionService
. А дефолтных от спринг-бут не будет. Так что лучше от греха подальше назвать свой СonversionService, предназначенный для использования программно в приложении, как-то иначе.addConversionServices
?NB
@Bean(name = "conversionService")
@Primary
public ConversionService getConversionService(List<Converter> converters) {
ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
factory.setConverters(new HashSet<>(converters));
factory.afterPropertiesSet();
return factory.getObject();
}
S🕶
NB
NB
S🕶
NB
S🕶
NB
S🕶
AS
@RequestParam("tradepoints", required = false) tradePointIds: List<Long>?Можно каким-то образом сделать так, что если ничего не передается в tradepoints - список пустой, а не null?
NB
@RequestParam("tradepoints", required = false) tradePointIds: List<Long>?Можно каким-то образом сделать так, что если ничего не передается в tradepoints - список пустой, а не null?
AS
NB
NB
AS