Spring AOP
Category: Spring Core
SpEL and Value
Spring EL Accessing properties: $ – value# – expression/executionValue- @Value(“${bean.message}”)System environment variable- @Value(“#{systemEnvironment[‘SOME_ENV_VARIABLE’]}”) It casts to the required type: @Value(“${daily.limit}”) int maxTransferPerDay@Value(“#{environment[‘daily.limit’]}”)int maxTransferPerDay; But values are handled as String: @Value(“#{new Integer(environment[‘daily.limit’]) * 2 }”) -> OK@Value (“#{new java.net.URI(environment[‘home.page’]).host}”) -> OK@Value (“#{daily.limit * 2}”}) -> not OK Default values: @Value(“${daily.limit:1000}”)@Value(“#{environment[‘daily.limit’]?:1000}”) https://www.baeldung.com/spring-expression-language @Value This annotation can be…
SpringBoot Lifecycle extensions
BeanFactoryPostProcessor BeanFactoryPostProcessor operates on bean configuration metadata, it reads the configuration metadata and can change it before the container instantiates the beans. This interfaces can be extended to provide further customization. BeanPostProcessor The BeanPostProcessor interface can be itself customized logic to default steps, when Spring container finishes instantiating, configuring, and initializing a bean, several implementations…
Autowiring and others
Usage of @Autowired By default autowired beans are required but this be changed: @Autowired(required=false) Optional is also supported: Disambiguation @Qualifier is used for disambiguation, can be used both for components and beans (names). Autowiring resolution rules: Configuration choices If a class has only a default constructor -> no need to annotate with @Autowired if class had…
Stereotypes
Stereotypes are part of Spring annotations config, used with @ComponentScan. Annotations: @Components – is a generic stereotype for any Spring managed components. @Service – annotates classes at the service layer, code that holds business layer. @Repository – annotation used for classes from the persistence layer. Catches specific exceptions and re-throws them as Spring unified unchecked…