0% found this document useful (0 votes)
31 views4 pages

Spring Boot

This is a web development spring boot course, java developers interested in learning spring would find this helpful

Uploaded by

yabaza71
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views4 pages

Spring Boot

This is a web development spring boot course, java developers interested in learning spring would find this helpful

Uploaded by

yabaza71
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Java & Spring Training

Java Training
Java Core
https://www.javatpoint.com/java-tutorial

Collections
Java List Split: http://www.baeldung.com/java-list-split
Immutable lists: http://www.baeldung.com/java-immutable-list

Exception Handling
Junit

Advanced
Lambda Expressions
http://www.baeldung.com/java-8-lambda-expressions-tips

Sorting with Lambda expressions:


https://www.youtube.com/watch?time_continue=25&v=G-FnwHrAVwE

Benefits of lambdas

Enables functional programming


Readable and concise code
Easier-to-use APIs and libraries
Enables support for parallel processing
Lambdas allow you to pass methods to another methods (functions as values).
We can use Runnable with lambdas.
The java.util.function package contains out of the box interfaces that can be used to create lambda expressions: https://docs.oracle.
com/javase/8/docs/api/java/util/function/package-summary.html
Ex: Predicate, Consumer
The best way for exception handling in lambdas is to wrap the lambda in another exception handling lambda
Java collections have a "sort" method where we can pass a lambda expression.

Java Functional Interfaces


http://www.baeldung.com/java-8-functional-interfaces

Any interface with a SAM(Single Abstract Method) is a functional interface, and its implementation may be
treated as lambda expressions.
it will be better if we annotate an interface with the @FunctionalInterface annotation to get a compile error if anyone
else try to add additional abstract functions.

Streams
http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/
Streams are Monads, thus playing a big part in bringing functional programming to Java
In functional programming, a monad is a structure that represents computations defined as sequences of steps. A type with a monad
structure defines what it means to chain operations, or nest functions of that type together.
Calling the method stream() on a list of objects returns a regular object stream
Besides regular object streams Java 8 ships with special kinds of streams for working with the primitive data types int, long and dou
ble. As you might have guessed it’s IntStream, LongStream and DoubleStream
IntStreams can replace the regular for-loop utilizing IntStream.range()
IntStream.range(1, 4) .forEach(System.out::println);
All those primitive streams work just like regular object streams with the following differences:
Primitive streams use specialized lambda expressions, e.g. IntFunction instead of Function or IntPre
dicate instead of Predicate. And primitive streams support the additional terminal aggregate
operations sum() and average():
Primitive streams can be transformed to object streams via mapToObj()
Chained stream operations are executed vertically, so each element passes the whole chain before the next element is processed, Th
e first string “d2” passes filter then forEach, only then the second string “a2” is processed.
Order of the operations matters, and can reduce the number of iterations significantly.

Java Reflection

https://docs.oracle.com/javase/tutorial/reflect/

Reflection allows the developer to inspect and modify the behavior of an application at runtime.

Generics
https://www.tutorialspoint.com/java/java_generics.htm

Misc Java 8 https://dzone.com/articles/all-things-java-8


Java Method References https://dzone.com/articles/java-lambda-method-reference?
utm_source=DZone&utm_medium=article&utm_campaign=Java%208
Java Stream https://dzone.com/articles/a-guide-to-streams-in-java-8-in-depth-tutorial-wit
Java Stream Collectors class https://dzone.com/articles/java-stream-collectors
Process Collections Easily With Stream in Java 8 https://dzone.com/articles/process-collections-easily-with-stream-in-java-8?
utm_source=DZone&utm_medium=article&utm_campaign=Java%208
Java forEach, Iteration Over Java Collections With High Performance https://dzone.com/articles/iteration-over-java-collections-with-
high-performa?utm_source=DZone&utm_medium=article&utm_campaign=Java%208

Foreach and Stream API are convenient to work with Collections. You can write code faster. But, when your system is stable
and performance is a major concern, you should think about rewriting your loop.

Java StringJoiner class https://dzone.com/articles/joining-strings-in-java-8?


utm_source=DZone&utm_medium=article&utm_campaign=Java%208
Java Optional class https://dzone.com/articles/java-8-optional-handling-nulls-properly?
utm_source=DZone&utm_medium=article&utm_campaign=Java%208
Using Java Enums https://dzone.com/articles/using-java-enums?utm_source=DZone&utm_medium=article&utm_campaign=Java%208
How to Use Java HashMap Effectively https://dzone.com/articles/how-to-use-java-hashmap-effectively?
utm_source=DZone&utm_medium=article&utm_campaign=Java%208
Interface Default Methods in Java 8 https://dzone.com/articles/interface-default-methods-java?
utm_source=DZone&utm_medium=article&utm_campaign=Java%208, https://dzone.com/articles/when-to-use-java-8-default-methods-
in-interfaces?utm_source=DZone&utm_medium=article&utm_campaign=Java%208

- Modifying one interface in a JDK framework breaks all classes that extend the interface, which means that adding any new
method could break millions of lines of code. Therefore, default methods have introduced as a mechanism to extend
interfaces in a backward-compatible way.
Dynamic Proxies: http://www.baeldung.com/java-dynamic-proxies
Annotations
Creating custom annotations in Java: https://www.javatpoint.com/custom-annotation
Annotations processing

Class loader
Dynamic code generation
Apache tomcat
Regular expressions:

MultiThreading

https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html
Future: http://www.baeldung.com/java-future
Video tutorial: https://www.youtube.com/watch?v=lnbWFV4b7M4
https://www.quora.com/What-are-the-advantages-of-using-the-Executor-framework-in-the-Java-5

Spring Training
Spring Framework
https://www.marcobehler.com/guides/spring-framework
https://www.youtube.com/playlist?list=PLC97BDEFDCDD169D7

https://www.youtube.com/watch?v=If1Lw4pLLEo

Notes

Field injection should be mostly avoided. As a replacement, you should use either constructors or methods to inject your
dependencies. Both have its advantages and disadvantages and the usage depends on the situation. However, as those approaches
can be mixed, it is not an either-or choice and you can combine both setter and constructor injection in one class. Constructors are
more suitable for mandatory dependencies and when aiming for immutability. Setters are better for optional dependencies.

Spring Boot
https://www.youtube.com/playlist?list=PLqq-6Pq4lTTbx8p2oCgcAQGQyqN8XeA1x
https://www.youtube.com/watch?v=9SGDpanrc8U
https://www.marcobehler.com/guides/spring-boot-autoconfiguration

Spring MVC
https://www.marcobehler.com/guides/spring-mvc

When building Spring Boot projects, you’ll automatically use Spring MVC under the hood. But Spring Boot also pulls in Jackson by
default.
That is the reason why you can immediately write JSON endpoints with Spring Boot, because the correct HttpMessageConverts will be
added automatically for you.

Spring JPA

https://www.youtube.com/watch?v=8SGI_XS5OPw

http://www.baeldung.com/hibernate-4-spring
The persistence layer with Spring 3-1 and JPA: http://www.baeldung.com/2011/12/13/the-persistence-layer-with-spring-3-1-and-jpa/
The persistence layer with Spring data JPA: http://www.baeldung.com/the-persistence-layer-with-spring-data-jpa
Spring DAO JPA: http://www.baeldung.com/spring-dao-jpa
Simplify the DAO with Spring: http://www.baeldung.com/2011/12/08/simplifying-the-data-access-layer-with-spring-and-java-generics/
https://www.marcobehler.com/guides/spring-transaction-management-transactional-in-depth

Spring REST
Bootstrap a web application with Spring 5: http://www.baeldung.com/bootstraping-a-web-application-with-spring-and-java-based-
configuration
Build a REST API with Spring: http://www.baeldung.com/building-a-restful-web-service-with-spring-and-java-based-configuration
Spring security for a REST API: http://www.baeldung.com/securing-a-restful-web-service-with-spring-security
Basic and digest authentication for a REST service: http://www.baeldung.com/basic-and-digest-authentication-for-a-rest-api-with-spring-
security

controller (REST)- services - DTOS

Database Training
Designing data-intensive applications book: Ch2 and 3
DBMS database management systems course: coding ninjas
What to cover: Basic commands – query -- relations -- N+1 problem -- different joins -- order of execution – ACID

MISC
Effective java book
Summary: https://github.com/ashkanent/technical-notes/tree/master/Effective%20Java
Summary video:

Java concurrency in practice book


Web Sockets
https://www.toptal.com/java/stomp-spring-boot-websocket
https://medium.com/swlh/websockets-with-spring-part-1-http-and-websocket-36c69df1c2ee
https://www.baeldung.com/websockets-spring

Gradle
https://www.javatpoint.com/gradle
https://www.geeksforgeeks.org/difference-between-gradle-and-maven/

You might also like