At the company where I work (keylight GmbH) I gave a tech talk about the new version of Angular, here are the slides, enjoy!
A mostly JavaScript blog about my experiences with the platform and the language. https://nagyadam2092.github.io/
Showing posts with label framework. Show all posts
Showing posts with label framework. Show all posts
Saturday, March 21, 2020
Sunday, February 25, 2018
Spring framework
Although I'm working with Spring on a daily basis, sometimes it's good to revisit the basics of a framework / concept. So I did, and here are my notes. Cheers!
Objects are injected at runtime.
@Profile(“develop”) --- this anniotation makes sure to run that method.
e.g.: @Scope(“singleton”)
Dependency injection is achieved through @Autowired.
Setter Injection: inject at the setter method.
Constructor Injection: good practice, inject at the constructor. Class become immutable.
…
InventoryService inventoryService;
@Autowired
public OrderServiceImpl(InventoryService inventoryService) {
this.inventoryService = inventoryService;
}
@PreDestroy: method being run before destructor is called.
Applications:
In Spring AspectJ is handling the aspecting.
Parts of a Spring Aspect:
Configuring the Application Context
Inversion of Control
AKA Dependency InjectionObjects are injected at runtime.
Profiles
You can set profiles like develop or production to be able to branch the code.@Profile(“develop”) --- this anniotation makes sure to run that method.
Bean Scopes
- singleton: Scopes a single bean definition to a single object instance per Spring IoC container.
- prototype: Scopes a single bean definition to any number of object instances.
- request: Scopes a single bean definition to the lifecycle of a single HTTP request; that is each and every HTTP request will have its own instance of a bean created off the back of a single bean definition. Only valid in the context of a web-aware Spring ApplicationContext.
- session: Scopes a single bean definition to the lifecycle of a HTTP Session. Only valid in the context of a web-aware Spring ApplicationContext.
- global session: Scopes a single bean definition to the lifecycle of a global HTTP Session. Typically only valid when used in a portlet context. Only valid in the context of a web-aware Spring ApplicationContext.
e.g.: @Scope(“singleton”)
Proxies
Since Spring 4.0 every class which is loaded into the Bean Factory gets at least one Proxy.Annotation based configuration
@Component scan
This indicates that a class should be loaded to the bean factory.Dependency injection is achieved through @Autowired.
Autowiring
Field level: private attributes can be autowired, but not a good practice.Setter Injection: inject at the setter method.
Constructor Injection: good practice, inject at the constructor. Class become immutable.
…
InventoryService inventoryService;
@Autowired
public OrderServiceImpl(InventoryService inventoryService) {
this.inventoryService = inventoryService;
}
Lifecycle methods
@PostConstruct: method being run after constructor.@PreDestroy: method being run before destructor is called.
Bean lifecycle
Initialization phase:- Begins with creation of ApplicationContext
- BeanFactory initialization phase
- Bean initialization and instantiation
- Bean definitions loaded: from Java configuration, Bean configuration, Component scanning and aut configuration
- Post-process bean definitions: BeanFactory is loaded with references
- Instantiate Bean: Bean pointer is still referenced in Bean Factory, Objects have been constructed, BUT not available for use yet!
- Setters: beans are fully initialized; all initial dependencies are injected - beans still not ready for use
- Bean post-processor (pre- and post-init): almost the same as Initializer
- Initializer: @PostConstruct methods are called here; after the step beans are instantiated and initialized, dependencies have been injects, BEANS READY TO USE
Aspect Oriented Programming (AOP)
Aspects: reusable blocks of code that that are injected into your application during runtime.Applications:
- Logging
- Transactions
- Caching
- Security
In Spring AspectJ is handling the aspecting.
Parts of a Spring Aspect:
- Aspect: A modularization of a concern that cuts across multiple objects. Transaction management is a good example of a crosscutting concern in J2EE applications. In Spring AOP, aspects are implemented using regular classes (the schema-based approach) or regular classes annotated with the @Aspect annotation (@AspectJ style).
- Join point: A point during the execution of a program, such as the execution of a method or the handling of an exception. In Spring AOP, a join point always represents a method execution. Join point information is available in advice bodies by declaring a parameter of type org.aspectj.lang.JoinPoint.
- Advice: Action taken by an aspect at a particular join point. Different types of advice include "around," "before" and "after" advice. Advice types are discussed below. Many AOP frameworks, including Spring, model an advice as an interceptor, maintaining a chain of interceptors "around" the join point.
- Pointcut: A predicate that matches join points. Advice is associated with a pointcut expression and runs at any join point matched by the pointcut (for example, the execution of a method with a certain name). The concept of join points as matched by pointcut expressions is central to AOP: Spring uses the AspectJ pointcut language by default.
Subscribe to:
Posts (Atom)