-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathindex.xml
1182 lines (960 loc) · 102 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>SivaLabs</title>
<link>https://sivalabs.github.io/</link>
<description>Recent content on SivaLabs</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Thu, 02 Jul 2020 04:59:17 +0530</lastBuildDate>
<atom:link href="https://sivalabs.github.io/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>GoLang from a Java developer perspective</title>
<link>https://sivalabs.github.io/2020/07/golang-from-a-java-developer-perspective/</link>
<pubDate>Thu, 02 Jul 2020 04:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2020/07/golang-from-a-java-developer-perspective/</guid>
<description>Gone are the days we can call ourselves as Java developer, .NET developer, Python developer etc. Nowadays we might need to work with multiple languages to some extent such as Python for scripting, Go for CLI utilities etc.
Out of personal interest I started learning Go Language 3 months ago and I am using Go for our current application. In this article I would like to share my first impression on Go language.</description>
</item>
<item>
<title>My proud moment as a mentor</title>
<link>https://sivalabs.github.io/2020/06/my-proud-moment-as-a-mentor/</link>
<pubDate>Mon, 08 Jun 2020 04:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2020/06/my-proud-moment-as-a-mentor/</guid>
<description>As software developers, most of us implicitly assume gaining strong technical skills might make us successful. Many of us assume being good at cutting edge technologies, mastering keyboard shortcuts, being able to work on front-end, back-end and infrastructure etc etc will make us successful in our careers.
Yes, the above mentioned skills definitely help, but just being good at tech skills might not make us successful. There is more to it.</description>
</item>
<item>
<title>Remote debugging springboot application</title>
<link>https://sivalabs.github.io/2020/05/remote-debugging-spring-boot-application/</link>
<pubDate>Sun, 31 May 2020 04:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2020/05/remote-debugging-spring-boot-application/</guid>
<description>We all know how to run SpringBoot application in debug mode from our favorite IDEs(Eclipse/IntellijIDEA etc) and debug the code. Recently I had to debug a SpringBoot application which is running on a remote server.
There is already lot of information on the Internet on how to remote debug java applications, but some approaches didn&rsquo;t work for me. So, here I would like to share my findings.
If application is running on localhost Suppose you are running your application on localhost only and remote debug from your IDE.</description>
</item>
<item>
<title>What I Learned in Week-14, 2020</title>
<link>https://sivalabs.github.io/2020/04/what-i-learned-2020-week-14/</link>
<pubDate>Mon, 06 Apr 2020 04:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2020/04/what-i-learned-2020-week-14/</guid>
<description>It&rsquo;s been tough time for everyone due to the Corona virus situation. Staying at home for weeks and weeks is not easy, but it is very necessary thing to do so that we don&rsquo;t spread the virus.
However, if I look on the bright side I used to spend minimum 3 hours for office commute everyday. Now I am using that time for various other activities including learning some new things.</description>
</item>
<item>
<title>Imposing Code Structure Guidelines using ArchUnit</title>
<link>https://sivalabs.github.io/2020/04/impose-architecture-guidelines-using-archunit/</link>
<pubDate>Thu, 02 Apr 2020 04:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2020/04/impose-architecture-guidelines-using-archunit/</guid>
<description>While building the software we all agree, as a team, to follow a set of guidelines which are typically considered as best practices. But during the development, developers might violate those guidelines unknowingly or ignorance. Typically we rely upon code reviews or code quality checking tools like SonarQube, PMD etc to check for such violations. But some of the guidelines could be opinionated decisions which might not be able to automate using SonarQube, PMD etc.</description>
</item>
<item>
<title>What I Learned in Week-11, 2020</title>
<link>https://sivalabs.github.io/2020/03/what-i-learned-2020-week-11/</link>
<pubDate>Sun, 15 Mar 2020 04:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2020/03/what-i-learned-2020-week-11/</guid>
<description>I come across many blog posts from various sources like Twitter, StackOverflow etc and some of them are very helpful. Also, in day to day work I learn few new things, explore some new tools. Usually I keep track of this information using Browser Bookmarks and Pocket.
I thought may be this information could be useful for others too. So, I am going to share it weekly on my blog.</description>
</item>
<item>
<title>SpringBoot Integration Testing using TestContainers Starter</title>
<link>https://sivalabs.github.io/2020/02/spring-boot-integration-testing-using-testcontainers-starter/</link>
<pubDate>Mon, 03 Feb 2020 04:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2020/02/spring-boot-integration-testing-using-testcontainers-starter/</guid>
<description>One of the many reasons for huge popularity of Spring and SpringBoot is it&rsquo;s great support for Testing. We can write unit tests using Mockito without requiring any Spring features. And, we can write Integration Tests using Spring testing support by creating Spring ApplicationContext.
Read Guide to Testing SpringBoot Applications
While running integration tests we might need to interact with external services like relational databases, NoSQL datastores, Kafka etc.</description>
</item>
<item>
<title>Creating Yeoman based SpringBoot Generator</title>
<link>https://sivalabs.github.io/2020/01/creating-yeoman-based-springboot-generator/</link>
<pubDate>Wed, 29 Jan 2020 04:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2020/01/creating-yeoman-based-springboot-generator/</guid>
<description>I have been working with Spring and SpringBoot for many years and I needed to create lot of Spring(Boot) applications for various reasons like blog posts, sample apps, book sample code and for my personal learning as well. So, I needed some tool/mechanism to quickly create Spring(Boot) application with most commonly used configuration.
I know we have the most popular SpringBoot Initializer to create SpringBoot applications. But, it generates the application with only selected starter dependencies added and nothing more.</description>
</item>
<item>
<title>Testing REST APIs using Postman and Newman</title>
<link>https://sivalabs.github.io/2019/10/testing-rest-apis-with-postman-newman/</link>
<pubDate>Sun, 20 Oct 2019 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2019/10/testing-rest-apis-with-postman-newman/</guid>
<description>Postman is the most popular tool for testing REST APIs. I guess most of the developers are familiar with how to use Postman to send various types (GET, POST, PUT, DELETE, etc) of HTTP requests with various types of payloads (form data, JSON etc).
In addition to triggering one API request and verifying the response, I frequently come across some common needs like
Call an API and assert response Parameterize variables based on the environment Trigger a series of API calls to simulate some user flow Trigger one API request with different inputs and assert expected response Load test by simulating load on the server by firing a series of requests repeatedly with a certain delay Run Postman collection to do Smoke Test from Build Pipeline As I am already using Postman to test my REST APIs, I thought of exploring if I can do all these tasks using Postman itself and it turns out I can.</description>
</item>
<item>
<title>Testing SpringBoot Applications</title>
<link>https://sivalabs.github.io/2019/10/spring-boot-testing/</link>
<pubDate>Mon, 07 Oct 2019 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2019/10/spring-boot-testing/</guid>
<description>SpringBoot is the most popular tech stack for building Java based REST APIs. In this tutorial we will learn how to write tests for SpringBoot applications.
Create SpringBoot Application Unit Testing using JUnit 5 and Mockito Integration Testing using TestContainers Testing MicroService Integrations using MockServer As we all know, we write unit tests for testing single component (a class) behaviour where as we write integration tests for testing a feature which may involve interaction with multiple components.</description>
</item>
<item>
<title>Kafka Tutorial - Producer and Consumer using SpringBoot</title>
<link>https://sivalabs.github.io/2019/06/kafka-tutorial-producer-consumer-using-spring-boot/</link>
<pubDate>Mon, 24 Jun 2019 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2019/06/kafka-tutorial-producer-consumer-using-spring-boot/</guid>
<description>In the previous post Kafka Tutorial - Java Producer and Consumer we have learned how to implement a Producer and Consumer for a Kafka topic using plain Java Client API.
In this post we are going to look at how to use Spring for Kafka which provides high level abstraction over Kafka Java Client API to make it easier to work with Kafka.
You can find the source code for this article at https://github.</description>
</item>
<item>
<title>Kafka Tutorial - Java Producer and Consumer</title>
<link>https://sivalabs.github.io/2019/06/kafka-tutorial-java-producer-consumer/</link>
<pubDate>Fri, 21 Jun 2019 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2019/06/kafka-tutorial-java-producer-consumer/</guid>
<description>Kafka, depending on how you use it, can be seen as a Message Broker, Event Store or a Streaming Platform etc. Kafka became a preferred technology for many of the modern applications because of various reasons like:
Kafka can be used as an Event Store if you are using Event Driven Microservices architecture Kafka can be used as a Message Broker to enable communication across multiple applications Kafka can be used as Streaming platform for processing events in realtime etc etc.</description>
</item>
<item>
<title>SpringBoot Best Practices</title>
<link>https://sivalabs.github.io/2019/05/spring-boot-best-practices/</link>
<pubDate>Tue, 14 May 2019 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2019/05/spring-boot-best-practices/</guid>
<description>I have been working with SpringBoot for many years and over the time I worked with many SpringBoot based codebases. There are few common mistakes that I observe in the projects that use SpringBoot. So, I thought of writing down few good practices that can be followed while using SpringBoot.
1. Understand SpringBoot Core Concepts I know, this sounds very obvious but I see many developers jumping onto using SpringBoot without having any prior knowledge on Spring, Dependency Injection.</description>
</item>
<item>
<title>MicroServices - Part 6 : Distributed Tracing with Spring Cloud Sleuth and Zipkin</title>
<link>https://sivalabs.github.io/2018/03/microservices-part-6-distributed-tracing-with-spring-cloud-sleuth-and-zipkin/</link>
<pubDate>Tue, 20 Mar 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/03/microservices-part-6-distributed-tracing-with-spring-cloud-sleuth-and-zipkin/</guid>
<description>One of the challenges in microservices architecture is the ability to debug issues. A simple user action might trigger a chain of downstream microservice calls. It would be tedious to trace the logs related to a particular user action across microservices. In addition to that, we might want to track down why a certain microservice call is taking so much time. We can use Spring Cloud Sleuth to handle these kinds of issues.</description>
</item>
<item>
<title>MicroServices - Part 5 : Spring Cloud Zuul Proxy as API Gateway</title>
<link>https://sivalabs.github.io/2018/03/microservices-part-5-spring-cloud-zuul-proxy-as-api-gateway/</link>
<pubDate>Thu, 15 Mar 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/03/microservices-part-5-spring-cloud-zuul-proxy-as-api-gateway/</guid>
<description>In microservices architecture, there could be a number of API services and few UI components that are talking to APIs. As of now, many microservices based application still use monolithic front-ends where the entire UI is built as a single module. You may choose to go with micro-frontends where the UI is also decomposed into multiple microservice talking to APIs to get the relevant data. Instead of letting UI know about all our microservices details we can provide a unified proxy interface that will delegate the calls to various microservices based on URL pattern.</description>
</item>
<item>
<title>MicroServices - Part 4 : Spring Cloud Circuit Breaker using Netflix Hystrix</title>
<link>https://sivalabs.github.io/2018/03/spring-cloud-netflix-circuit-breaker/</link>
<pubDate>Mon, 12 Mar 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/03/spring-cloud-netflix-circuit-breaker/</guid>
<description>In the microservices world, to fulfill a client request one microservice may need to talk to other microservices. We should minimize this kind of direct dependencies on other microservices but in some cases it is unavoidable. If a microservice is down or not functioning properly then the issue may cascade up to the upstream services. Netflix created Hystrix library implementing Circuit Breaker pattern to address these kinds of issues. We can use Spring Cloud Netflix Hystrix Circuit Breaker to protect microservices from cascading failures.</description>
</item>
<item>
<title>MicroServices - Part 3 : Spring Cloud Service Registry and Discovery</title>
<link>https://sivalabs.github.io/2018/03/microservices-springcloud-eureka/</link>
<pubDate>Thu, 08 Mar 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/03/microservices-springcloud-eureka/</guid>
<description>In the microservices world, Service Registry and Discovery plays an important role because we most likely run multiple instances of services and we need a mechanism to call other services without hardcoding their hostnames or port numbers. In addition to that, in Cloud environments service instances may come up and go down anytime. So we need some automatic service registration and discovery mechanism. Spring Cloud provides Service Registry and Discovery features, as usual, with multiple options.</description>
</item>
<item>
<title>MicroServices - Part 2 : Configuration Management with Spring Cloud Config and Vault</title>
<link>https://sivalabs.github.io/2018/03/microservices-part-2-configuration-management-spring-cloud-config-vault/</link>
<pubDate>Mon, 05 Mar 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/03/microservices-part-2-configuration-management-spring-cloud-config-vault/</guid>
<description>In MicroServices using Spring Boot &amp; Spring Cloud – Part 1 : Overview, we took a brief look at what are micro-services and how we can use SpringBoot and SpringCloud to build micro-services.
In this post, we are going to learn:
What is the need for Spring Cloud Config and Vault? Create our first micro-service: catalog-service Create Spring Cloud Config Server Using Vault for storing sensitive data MicroServices using Spring Boot &amp; Spring Cloud</description>
</item>
<item>
<title>MicroServices using Spring Boot & Spring Cloud – Part 1 : Overview</title>
<link>https://sivalabs.github.io/2018/03/microservices-using-springboot-spring-cloud-part-1-overview/</link>
<pubDate>Fri, 02 Mar 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/03/microservices-using-springboot-spring-cloud-part-1-overview/</guid>
<description>Nowadays MicroServices is the hot buzzword in software development and many organizations prefer building their enterprise applications using MicroServices architecture. In Java community, SpringBoot is the most widely used framework for building both monoliths and microservices. I am planning to write a series of articles covering how to build microservices using SpringBoot and SpringCloud.
In this article we are going to learn about following:
Monoliths what are MicroServices? Advantages of MicroServices Challenges with MicroServices Why SpringBoot &amp; SpringCloud are a good choice for MicroServices?</description>
</item>
<item>
<title>Why SpringBoot is so popular and how to learn SpringBoot effectively?</title>
<link>https://sivalabs.github.io/2018/02/why-springboot-so-popular-how-to-learn-springboot/</link>
<pubDate>Thu, 22 Feb 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/02/why-springboot-so-popular-how-to-learn-springboot/</guid>
<description>SpringBoot is the most popular and widely used Java framework. Occasionally this discussion of “Why is SpringBoot so popular?” come between me and my friends/colleagues. Also, I do get emails from various people asking “Spring is huge and how to learn it quickly?”. In this post, I will try to answer these 2 questions.
Why is SpringBoot so popular? There could be many reasons why Spring and SpringBoot are very popular, but in my opinion following are the key reasons:</description>
</item>
<item>
<title>SpringBoot Messaging with RabbitMQ</title>
<link>https://sivalabs.github.io/2018/02/springboot-messaging-rabbitmq/</link>
<pubDate>Tue, 20 Feb 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/02/springboot-messaging-rabbitmq/</guid>
<description>RabbitMQ is one of the popular message broker solutions and provides client libraries to be used from various programming languages including Java, Scala, .NET, Go, Python, Ruby, PHP etc. In this tutorial, we will learn how to use RabbitMQ message broker to send and receive messages from a SpringBoot application. We will also look at how to send messages as JSON payloads and how to deal with errors using Dead Letter Queues (DLQ).</description>
</item>
<item>
<title>Session Management using Spring Session with JDBC DataStore</title>
<link>https://sivalabs.github.io/2018/02/session-management-using-spring-session-jdbc-datastore/</link>
<pubDate>Wed, 07 Feb 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/02/session-management-using-spring-session-jdbc-datastore/</guid>
<description>In web applications, user session management is very crucial for managing user state. In this article, we are going to learn about what are the approaches we have been following to manage user sessions in a clustered environment and how we can use Spring Session to implement it in a much simpler and more scalable way.
Typically in production environments, we will have multiple server nodes with a load balancer in front of them and all the client traffic will be coming through the load balancer to one of the server nodes.</description>
</item>
<item>
<title>CI/CD for SpringBoot applications using Travis-CI</title>
<link>https://sivalabs.github.io/2018/01/ci-cd-springboot-applications-using-travis-ci/</link>
<pubDate>Wed, 24 Jan 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/01/ci-cd-springboot-applications-using-travis-ci/</guid>
<description>In this article we are going to learn how we can use Travis CI for Continuous Integration and Continuous Deployment (CI/CD) of a SpringBoot application. We will learn how to run maven build goals, perform test coverage validation using JaCoCo plugin, Code Quality checks using SonarCloud, build Docker image and push it to DockerHub and finally deploy it to Heroku.
The source code for this article is at https://github.com/sivaprasadreddy/jblogger</description>
</item>
<item>
<title>How was my year 2017 and my plans for 2018</title>
<link>https://sivalabs.github.io/2018/01/how-was-my-year-2017-and-plan-for-2018/</link>
<pubDate>Mon, 01 Jan 2018 07:59:17 +0530</pubDate>
<guid>https://sivalabs.github.io/2018/01/how-was-my-year-2017-and-plan-for-2018/</guid>
<description>Happy new year to you :-) I don&rsquo;t really believe in new year resolutions or making big 5 year plans!! But I do realize that by making a list of things that I want to do keeps me focus on those things and minimize the distractions.
Before going to talk about my grand plans for 2018 let me take moment and see how was my 2017.
What I did in 2017 I wrote a new book Beginning Spring Boot 2 with Apress publishers I learned a lot of good practices at ThoughtWorks I gave a conference talk on MicroServices at DevConHyd 2017 Conference I gave a GeekNight talk on Cloud Native Applications using SpringBoot and Spring Cloud I quit my job to start my own consulting gig Learned to Say NO The year 2017 is a wonderful year for me in many ways.</description>
</item>
<item>
<title>Java Tutorials</title>
<link>https://sivalabs.github.io/tutorials/java/</link>
<pubDate>Sat, 16 Dec 2017 12:12:31 +0530</pubDate>
<guid>https://sivalabs.github.io/tutorials/java/</guid>
<description>Java Tutorials [When to use RequestDispatcher.forward() and response.sendRedirect()?] (/2011/08/when-to-use-requestdispatcherforward/) MyBatis Tutorials [MyBatis Tutorial: Part1 – CRUD Operations] (/2012/10/mybatis-tutorial-part1-crud-operations/) [MyBatis Tutorial: Part-2: CRUD operations Using Annotations] (/2012/10/mybatis-tutorial-part-2-crud-operations-using-annotations/) [MyBatis Tutorial: Part 3 – Mapping Relationships] (/2012/10/mybatis-tutorial-part-3-mapping-relationships/) [MyBatis Tutorial : Part4 – Spring Integration] (/2012/10/mybatis-tutorial-part4-spring-integration/) </description>
</item>
<item>
<title>Projects</title>
<link>https://sivalabs.github.io/projects/</link>
<pubDate>Sat, 16 Dec 2017 12:06:31 +0530</pubDate>
<guid>https://sivalabs.github.io/projects/</guid>
<description>1. generator-springboot A Yeoman generator for generating MicroServices with SpringBoot. We can use generator-springboot to generate a SpringBoot microservice, Spring Cloud Config Server or Service Registry based on Netflix Eureka.
How to use? $ npm install -g yo $ npm install -g generator-springboot $ yo springboot For more information on features see https://github.com/sivaprasadreddy/generator-springboot
2. TodoList A simple TodoList application written in Java using SpringBoot and ReactJS frontend. This is a playground application to try out new features, reference to blog articles.</description>
</item>
<item>
<title>Spring Boot Tutorials</title>
<link>https://sivalabs.github.io/tutorials/springboot/</link>
<pubDate>Sun, 03 Dec 2017 11:06:31 +0000</pubDate>
<guid>https://sivalabs.github.io/tutorials/springboot/</guid>
<description>Spring Boot Tutorials [Why SpringBoot?] (/2016/03/why-springboot/) [How SpringBoot AutoConfiguration magic works?] (/2016/03/how-springboot-autoconfiguration-magic/) [Getting Started with SpringBoot in Intellij IDEA Community Edition] (/2016/09/getting-started-springboot-intellij-idea-community-edition/) [SpringBoot : Working with JdbcTemplate] (/2016/03/springboot-working-with-jdbctemplate/) [SpringBoot : Working with MyBatis] (/2016/03/springboot-working-with-mybatis/) [SpringBoot : Working with JOOQ] (/2016/03/springboot-working-with-jooq/) [Creating Custom SpringBoot Starter for Twitter4j] (/2016/04/creating-custom-springboot-starter-for/) Spring Cloud Tutorials Introduction to Spring Cloud Config Server Auto Refresh Config Changes using Spring Cloud Bus </description>
</item>
<item>
<title>My Review of Vlad Mihalcea’s High-Performance Java Persistence book</title>
<link>https://sivalabs.github.io/2017/11/my-review-of-vlad-mihalceas-high-performance-java-persistence-book/</link>
<pubDate>Sun, 05 Nov 2017 04:59:17 +0000</pubDate>
<guid>https://sivalabs.github.io/2017/11/my-review-of-vlad-mihalceas-high-performance-java-persistence-book/</guid>
<description>In Java world, JPA/Hibernate is the most popular and widely used framework. When it comes to overall performance of a software system database persistence layer plays the crucial role. The tricky part with JPA/Hibernate is it is very easy to get started but very very hard to master. This is where Vlad Mihalcea‘s High-Performance Java Persistence book helps you a lot.
The High-Performance Java Persistence book is not just another Hibernate book saying you put this annotation here and call that method there and you are done.</description>
</item>
<item>
<title>Select ALL starters on Spring Initializer (http://start.spring.io)</title>
<link>https://sivalabs.github.io/2017/10/select-all-starters-on-spring-initializer-httpstart-spring-io/</link>
<pubDate>Wed, 18 Oct 2017 02:50:23 +0000</pubDate>
<guid>https://sivalabs.github.io/2017/10/select-all-starters-on-spring-initializer-httpstart-spring-io/</guid>
<description>If you are working on Spring Boot then you most probably aware of Spring Initializer (http://start.spring.io) which is an online spring boot application generator. You can select the starters that you want to use and then generate the application.
If you notice that there is no SELECT ALL option to select all the starters. Who would do that insane thing of selecting all the starters for an application??!!???
But, i would like to have the SELECT ALL option for one single reason:</description>
</item>
<item>
<title>Spring Cloud Tutorials – Auto Refresh Config Changes using Spring Cloud Bus</title>
<link>https://sivalabs.github.io/2017/08/spring-cloud-tutorials-auto-refresh-config-changes-using-spring-cloud-bus/</link>
<pubDate>Mon, 14 Aug 2017 12:30:43 +0000</pubDate>
<guid>https://sivalabs.github.io/2017/08/spring-cloud-tutorials-auto-refresh-config-changes-using-spring-cloud-bus/</guid>
<description>Problem In the previous article Introduction to Spring Cloud Config Server we have seen how to use Spring Cloud Config Server.
But, the problem is to reload the config changes in Config Client applications we need to trigger /refresh endpoint manually. This is not practical and viable if you have large number of applications.
Solution Spring Cloud Bus module can be used to link multiple applications with a message broker and we can broadcast configuration changes.</description>
</item>
<item>
<title>Spring Cloud Tutorials – Introduction to Spring Cloud Config Server</title>
<link>https://sivalabs.github.io/2017/08/spring-cloud-tutorials-introduction-to-spring-cloud-config-server/</link>
<pubDate>Mon, 14 Aug 2017 03:35:07 +0000</pubDate>
<guid>https://sivalabs.github.io/2017/08/spring-cloud-tutorials-introduction-to-spring-cloud-config-server/</guid>
<description>Problem SpringBoot provides lot of flexibility in externalizing configuration properties via properties or YAML files. We can also configure properties for each environment (dev, qa, prod etc) separately using profile specific configuration files such as application.properties, application-dev.properties, application-prod.properties etc. But once the application is started we can not update the properties at runtime. If we change the properties we need to restart the application to use the updated configuration properties.</description>
</item>
<item>
<title>Getting Started with SpringBoot in Intellij IDEA Community Edition</title>
<link>https://sivalabs.github.io/2016/09/getting-started-springboot-intellij-idea-community-edition/</link>
<pubDate>Wed, 07 Sep 2016 09:53:35 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/09/getting-started-springboot-intellij-idea-community-edition/</guid>
<description>We can use Intellij IDEA Community Edition for working with SpringBoot applications as we don&rsquo;t need support for configuring servers like Tomcat, Wildlfy etc and can simply run the applications by running main() method.
However, there is no provision in Intellij IDEA Community Edition to create SpringBoot application directly, the way it supports in Ultimate Edition.
We can go to http://start.spring.io/ and generate the project and then import into our IDE.</description>
</item>
<item>
<title>My Books</title>
<link>https://sivalabs.github.io/mybooks/</link>
<pubDate>Mon, 05 Sep 2016 02:32:39 +0000</pubDate>
<guid>https://sivalabs.github.io/mybooks/</guid>
<description>Beginning Spring Boot 2 SpringBoot : Learn By Example PrimeFaces Beginners Guide Java Persistence with MyBatis3 </description>
</item>
<item>
<title>Update on SpringBoot : Learn By Example book</title>
<link>https://sivalabs.github.io/2016/07/update-springboot-learn-example-book/</link>
<pubDate>Sat, 30 Jul 2016 02:53:50 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/07/update-springboot-learn-example-book/</guid>
<description>I would like to let you know that I have updated/added the following sections to my SpringBoot : Learn By Example book.
Additions to existing chapters: Working with Multiple Databases Exposing JPA entities with bi-directional references through RESTful services In some of our applications we need to work with multiple databases. For example, we may have a primary database and a reporting database where most the application uses primary database and the application reports will be generated out of reporting database data.</description>
</item>
<item>
<title>How to fix “vt-x is disabled in the bios” error?</title>
<link>https://sivalabs.github.io/2016/07/fix-vt-x-disabled-bios-error/</link>
<pubDate>Thu, 21 Jul 2016 01:54:29 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/07/fix-vt-x-disabled-bios-error/</guid>
<description>If you face the vt-x is disabled in the bios error while trying to run Android emulator, here is the solution that worked for me.
Step 1: Enable Virtualization Technology in BIOS Go to BIOS Setup and enable “Virtualization Technology” option.
On my Lenovo laptop this option was already enabled, but still getting this error. I have disabled it and re-enabled it, then it is working.
Step 2: Install HAXM Installer from Android SDK Manager Start the Android SDK Manager, select Extras -&gt; Intel x86 Emulator Accelerator (HAXM Installer) and install it.</description>
</item>
<item>
<title>My New Book SpringBoot : Learn By Example Published Today</title>
<link>https://sivalabs.github.io/2016/07/my-new-book-springboot-learn-by-example/</link>
<pubDate>Wed, 20 Jul 2016 06:05:31 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/07/my-new-book-springboot-learn-by-example/</guid>
<description>I am happy to announce that my new book SpringBoot : Learn By Example got published today on Leanpub.
What is SpringBoot? Spring is one of the most popular Java frameworks out there to build web and enterprise application.
Spring supports variety of configuration approaches (XML, Annotations, JavaConfig etc) and properly configuring Spring applications become a bit tedious and repetitive process. To avoid these problems Spring team introduced SpringBoot to address the complexity of configuring Spring application.</description>
</item>
<item>
<title>Videos</title>
<link>https://sivalabs.github.io/videos/</link>
<pubDate>Sun, 10 Apr 2016 04:03:33 +0000</pubDate>
<guid>https://sivalabs.github.io/videos/</guid>
<description>My YouTube Channel Part 1 : Introduction To SpringBoot Part-2 : Using SpringBoot with Tomcat Jetty Undertow servers </description>
</item>
<item>
<title>Creating Custom SpringBoot Starter for Twitter4j</title>
<link>https://sivalabs.github.io/2016/04/creating-custom-springboot-starter-for/</link>
<pubDate>Fri, 08 Apr 2016 06:57:23 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/04/creating-custom-springboot-starter-for/</guid>
<description>SpringBoot provides lot of starter modules to get up and running quickly. SpringBoot’s auto-configure mechanism takes care of configuring SpringBeans on our behalf based on various criteria.
In addition to the springboot starters that comes out-of-the-box provided by Core Spring Team, we can also create our own starter modules.
In this post we will look into how to create a custom SpringBoot starter. To demonstrate it we are going to create twitter4j-spring-boot-starter which will auto-configure Twitter4J beans.</description>
</item>
<item>
<title>SpringBoot : Working with JOOQ</title>
<link>https://sivalabs.github.io/2016/03/springboot-working-with-jooq/</link>
<pubDate>Tue, 15 Mar 2016 07:13:21 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/03/springboot-working-with-jooq/</guid>
<description>In my previous article SpringBoot : Working with MyBatis we have learned how to use SpringBoot MyBatis Starter to quickly get up and running with Spring and MyBatis. In this article we are going to learn about how to use SpringBoot JOOQ Starter.
JOOQ (JOOQ Object Oriented Querying) is a persistence framework which embraces SQL.
JOOQ provides the following features:
Building Typesafe SQL using DSL API Typesafe database object referencing using Code Generation Easy to use API for Querying and Data fetching SQL logging and debugging</description>
</item>
<item>
<title>SpringBoot : Working with MyBatis</title>
<link>https://sivalabs.github.io/2016/03/springboot-working-with-mybatis/</link>
<pubDate>Mon, 14 Mar 2016 07:10:42 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/03/springboot-working-with-mybatis/</guid>
<description>MyBatis is a SQL Mapping framework with support for custom SQL, stored procedures and advanced mappings.
SpringBoot doesn’t provide official support for MyBatis integration, but MyBatis community built a SpringBoot starter for MyBatis.
You can read about the SpringBoot MyBatis Starter release announcement at http://blog.mybatis.org/2015/11/mybatis-spring-boot-released.html and you can explore the source code on GitHub https://github.com/mybatis/mybatis-spring-boot.
Create a SpringBoot Maven project and add the following MyBatis Starter dependency. &lt;dependency&gt; &lt;groupId&gt;org.</description>
</item>
<item>
<title>SpringBoot : Working with JdbcTemplate</title>
<link>https://sivalabs.github.io/2016/03/springboot-working-with-jdbctemplate/</link>
<pubDate>Mon, 14 Mar 2016 07:08:22 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/03/springboot-working-with-jdbctemplate/</guid>
<description>Spring provides a nice abstraction on top of JDBC API using JdbcTemplate and also provides great transaction management capabilities using annotation based approach.
First let’s take a quick look at how we generally use Spring’s JdbcTemplate (without SpringBoot) by registering DataSource, TransactionManager and JdbcTemplate beans and optionally we can register DataSourceInitializer bean to initialize our database.
@Configuration @ComponentScan @EnableTransactionManagement @PropertySource(value = { &#34;classpath:application.properties&#34; }) public class AppConfig { @Autowired private Environment env; @Value(&#34;${init-db:false}&#34;) private String initDatabase; @Bean public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } @Bean public JdbcTemplate jdbcTemplate(DataSource dataSource) { return new JdbcTemplate(dataSource); } @Bean public PlatformTransactionManager transactionManager(DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean public DataSource dataSource() { BasicDataSource dataSource = new BasicDataSource(); dataSource.</description>
</item>
<item>
<title>How SpringBoot AutoConfiguration magic works?</title>
<link>https://sivalabs.github.io/2016/03/how-springboot-autoconfiguration-magic/</link>
<pubDate>Sun, 13 Mar 2016 07:04:56 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/03/how-springboot-autoconfiguration-magic/</guid>
<description>In my previous post Why SpringBoot? we have looked at how to create a SpringBoot application. But you may or may not understand what is going on behind the scenes. You may want to understand the magic behind the SpringBoot’s AutoConfiguration.
But before that you should know about Spring’s @Conditional feature based on which all the SpringBoot’s AutoConfiguration magic depends.
Exploring the power of @Conditional While developing Spring based applications we may come across of a need to register beans conditionally.</description>
</item>
<item>
<title>Why SpringBoot?</title>
<link>https://sivalabs.github.io/2016/03/why-springboot/</link>
<pubDate>Sun, 13 Mar 2016 07:02:10 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/03/why-springboot/</guid>
<description>Spring is a very popular Java based framework for building web and enterprise applications. Unlike many other frameworks which focuses on only one area, Spring framework provides a wide verity of features addressing the modern business needs via its portfolio projects.
Spring framework provides flexibility to configure the beans in multiple ways such as XML, Annotations and JavaConfig. With the number of features increased the complexity also gets increased and configuring Spring applications becomes tedious and error-prone.</description>
</item>
<item>
<title>Retrying Method Execution using Spring AOP</title>
<link>https://sivalabs.github.io/2016/01/retrying-method-execution-using-spring-aop/</link>
<pubDate>Tue, 05 Jan 2016 15:40:36 +0000</pubDate>
<guid>https://sivalabs.github.io/2016/01/retrying-method-execution-using-spring-aop/</guid>
<description>One of my blog follower sends an email asking me to show an example of “RealWorld Usage of Spring AOP”. He mentioned that in most of the examples the usage of Spring AOP is demonstrated for logging method entry/exit or Transaction management or Security checks. He wanted to know how Spring AOP is being used in “Real Project for Real Problems”.
So I would like to show how I have used Spring AOP for one of my project to handle a real problem.</description>
</item>
<item>
<title>JCart : Iteration-8</title>
<link>https://sivalabs.github.io/2015/12/jcart-iteration-8/</link>
<pubDate>Thu, 31 Dec 2015 11:37:10 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-iteration-8/</guid>
<description>In this Iteration#8 we will implement showing the Customer Account and Order History functionality in our ShoppingCart application.
Customer MyAccount Page Profile Order History Once the customer is logged in our system he can click on MyAccount link at the top of the header and view his profile details and order history.
First let us write the Controller handler method in our CustomerController to show myAccount details.</description>
</item>
<item>
<title>JCart : Manage Customers</title>
<link>https://sivalabs.github.io/2015/12/jcart-manage-customers/</link>
<pubDate>Thu, 31 Dec 2015 09:34:50 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-manage-customers/</guid>
<description>For Managing Customers we need a provision to see all the list of customers and view any Customers details.
Let us start with implementing the back-end Customer service.
public interface CustomerRepository extends JpaRepository&lt;Customer, Integer&gt; { Customer findByEmail(String email); @Query(&#34;select o from Order o where o.customer.email=?1&#34;) List&lt;Order&gt; getCustomerOrders(String email); } @Service @Transactional public class CustomerService { @Autowired CustomerRepository customerRepository; public Customer getCustomerByEmail(String email) { return customerRepository.findByEmail(email); } public Customer createCustomer(Customer customer) { return customerRepository.</description>
</item>
<item>
<title>JCart : Manage Orders</title>
<link>https://sivalabs.github.io/2015/12/jcart-manage-orders/</link>
<pubDate>Thu, 31 Dec 2015 09:21:17 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-manage-orders/</guid>
<description>For Managing Orders we need a provision to see all the list of orders and view an order details and updating the order status.
Let us start with implementing the back-end order service.
@Service @Transactional public class OrderService { @Autowired EmailService emailService; @Autowired OrderRepository orderRepository; ... ... public Order getOrder(String orderNumber) { return orderRepository.findByOrderNumber(orderNumber); } public List&lt;Order&gt; getAllOrders() { Sort sort = new Sort(Direction.DESC, &#34;createdOn&#34;); return orderRepository.findAll(sort); } public Order updateOrder(Order order) { Order o = getOrder(order.</description>
</item>
<item>
<title>JCart : Iteration-7</title>
<link>https://sivalabs.github.io/2015/12/jcart-iteration-7/</link>
<pubDate>Thu, 31 Dec 2015 09:17:15 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-iteration-7/</guid>
<description>In Iteration#6 we have implemented features in ShoppingCart application to enable Customers place orders. In this Iteration#7 we will implement the features in Administration application to view and manage the Customers and Orders.
As part of Iteration#7 we will implement the following usecases:
Manage Orders List all Orders View Order details Update Order status Manage Customers List all customers View customer details </description>
</item>
<item>
<title>JCart : Billing and Delivery Page</title>
<link>https://sivalabs.github.io/2015/12/jcart-billing-and-delivery-page/</link>
<pubDate>Thu, 31 Dec 2015 07:40:14 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-billing-and-delivery-page/</guid>
<description>Once the customer reviewed his cart items details and clicks on Checkout we should display Billing &amp; Delivery page where customer enters delivery address details, payment details etc and place the order.
Let us create a OrderDTO.java as follows:
public class OrderDTO implements Serializable { private static final long serialVersionUID = 1L; @NotEmpty(message=&#34;FirstName is required&#34;) private String firstName; @NotEmpty(message=&#34;LastName is required&#34;) private String lastName; @NotEmpty(message=&#34;EmailId is required&#34;) @Email private String emailId; @NotEmpty(message=&#34;Phone is required&#34;) private String phone; @NotEmpty(message=&#34;Address Line1 is required&#34;) private String addressLine1; private String addressLine2; @NotEmpty(message=&#34;City is required&#34;) private String city; @NotEmpty(message=&#34;State is required&#34;) private String state; @NotEmpty(message=&#34;ZipCode is required&#34;) private String zipCode; @NotEmpty(message=&#34;Country is required&#34;) private String country; @NotEmpty(message=&#34;FirstName is required&#34;) private String billingFirstName; @NotEmpty(message=&#34;LastName is required&#34;) private String billingLastName; @NotEmpty(message=&#34;Address Line1 is required&#34;) private String billingAddressLine1; private String billingAddressLine2; @NotEmpty(message=&#34;City is required&#34;) private String billingCity; @NotEmpty(message=&#34;State is required&#34;) private String billingState; @NotEmpty(message=&#34;ZipCode is required&#34;) private String billingZipCode; @NotEmpty(message=&#34;Country is required&#34;) private String billingCountry; @NotEmpty(message=&#34;Credit Card Number is required&#34;) private String ccNumber; @NotEmpty(message=&#34;CVV is required&#34;) private String cvv; //setters &amp; getters } Create CheckoutController to display the Billing &amp; Delivery page as follows:</description>
</item>
<item>
<title>JCart : Customer Registration</title>
<link>https://sivalabs.github.io/2015/12/jcart-customer-registration/</link>
<pubDate>Thu, 31 Dec 2015 07:24:01 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-customer-registration/</guid>
<description>To facilitate new customer registration we will provide a new Registration form where customer provide his details and register with our system.
Let us implement the back-end customer service operations.
public interface CustomerRepository extends JpaRepository&lt;Customer, Integer&gt;{ Customer findByEmail(String email); } @Service @Transactional public class CustomerService { @Autowired CustomerRepository customerRepository; public Customer getCustomerByEmail(String email) { return customerRepository.findByEmail(email); } public Customer createCustomer(Customer customer) { return customerRepository.save(customer); } } @Component public class CustomerValidator implements Validator { @Autowired private CustomerService custmoerService; @Override public boolean supports(Class&lt;?</description>
</item>
<item>
<title>JCart : Customer Login</title>
<link>https://sivalabs.github.io/2015/12/jcart-customer-login/</link>
<pubDate>Thu, 31 Dec 2015 07:20:06 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-customer-login/</guid>
<description>So far we have implemented the functionality where customers can browse the categories, add products to cart, view Cart and update/remove items.
But to checkout the cart the customer should login into the system. So if the customer is not yet loggedin we should redirect customer to login page. If customer is already registered with our system he can login or he should be able to register. So, we will start implementing Customer Login/Registration usecases.</description>
</item>
<item>
<title>JCart : Iteration -6</title>
<link>https://sivalabs.github.io/2015/12/jcart-iteration-6/</link>
<pubDate>Thu, 31 Dec 2015 07:16:40 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-iteration-6/</guid>
<description>In this Iteration-6 we will be implementing the Customer Login/Register and placing the orders.
As per of this we will implement the following usecases:
Customer Login Customer Registration Billing &amp; Delivery Page Create Order Order Confirmation Page Send Order Confirmation Email </description>
</item>
<item>
<title>JCart : View Cart</title>
<link>https://sivalabs.github.io/2015/12/jcart-view-cart/</link>
<pubDate>Thu, 31 Dec 2015 05:32:11 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-view-cart/</guid>
<description>In our earlier post we have implemented Add To Cart functionality. In this post we will implement showing the Cart Item details.
In out mainLayout.html header we have ShoppingCart icon showing the cart item count as follows:
&lt;div class=&#34;shopping-item&#34;&gt; &lt;a href=&#34;#&#34; th:href=&#34;@{/cart}&#34;&gt;Cart &lt;i class=&#34;fa fa-shopping-cart&#34;&gt;&lt;/i&gt; &lt;span id=&#34;cart-item-count&#34; class=&#34;product-count&#34;&gt;(0)&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; When customer clicks on Cart icon we will show the Cart details. Let us implement the “/cart” url handler method in CartController as follows:</description>
</item>
<item>
<title>JCart : ShoppingCart Add Item To Cart</title>
<link>https://sivalabs.github.io/2015/12/jcart-shoppingcart-add-item-to-cart/</link>
<pubDate>Thu, 31 Dec 2015 05:27:23 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-shoppingcart-add-item-to-cart/</guid>
<description>In our HomePage/CategoryPage/ProductPage we have a button Add To Cart as follows:
&lt;a class=&#34;add_to_cart_button&#34; data-quantity=&#34;1&#34; data-product_sku=&#34;&#34; data-product_id=&#34;70&#34; rel=&#34;nofollow&#34; href=&#34;#&#34; th:onclick=&#34;&#39;javascript:addItemToCart(\&#39;&#39; + ${product.sku} + &#39;\&#39;);&#39;&#34;&gt; Add to cart &lt;/a&gt; When customer clicks on Add To Cart button it will trigger addItemToCart(sku) JavaScript function passing the product SKU value.
Now create jcart-site/src/main/resources/static/assets/js/app.js and implement addItemToCart(sku) function as follows:
function addItemToCart(sku) { $.ajax ({ url: &#39;/cart/items&#39;, type: &#34;POST&#34;, dataType: &#34;json&#34;, contentType: &#34;application/json&#34;, data : &#39;{&#34;sku&#34;:&#34;&#39;+ sku +&#39;&#34;}&#34;&#39;, complete: function(responseData, status, xhttp){ updateCartItemCount(); } }); } This function triggers an Ajax call to url ‘/cart/items&rsquo; using jQuery and if it is successful we are calling another JavaScript function updateCartItemCount().</description>
</item>
<item>
<title>JCart : Iteration-5</title>
<link>https://sivalabs.github.io/2015/12/jcart-iteration-5/</link>
<pubDate>Thu, 31 Dec 2015 05:19:06 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-iteration-5/</guid>
<description>In Iteration-5 we will be primarily working on Cart related functionality. As part of Iteration-4 we have implemented showing Home page, Category Page, Product Page and Product Search features.
In this Iteration we will implement the following usecases:
Add To Cart in HomePage/CategoryPage/ProductPage Cart Page View Cart Items Updates Quantity Remove Items </description>
</item>
<item>
<title>JCart : ShoppingCart Product Search Results</title>
<link>https://sivalabs.github.io/2015/12/jcart-shoppingcart-product-search-results/</link>
<pubDate>Wed, 30 Dec 2015 14:27:57 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-shoppingcart-product-search-results/</guid>
<description>In our main template we have a Search box to search for products. In this post we will implement the Product Search functionality. When customer search for a product we will search products based on name or SKU or description.
Let us implement the search handler method in ProductController as follows:
@Controller public class ProductController extends JCartSiteBaseController { @Autowired protected CatalogService catalogService; ... ... @RequestMapping(&#34;/products&#34;) public String searchProducts(@RequestParam(name=&#34;q&#34;, defaultValue=&#34;&#34;) String query, Model model) { List&lt;Product&gt; products = catalogService.</description>
</item>
<item>
<title>JCart : ShoppingCart Product Page</title>
<link>https://sivalabs.github.io/2015/12/jcart-shoppingcart-product-page/</link>
<pubDate>Wed, 30 Dec 2015 14:25:35 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-shoppingcart-product-page/</guid>
<description>Customers can click on a product to view more details about the product either in Home Page or in Category Page.
Let us implement Controller method to show Product details as follows:
@Controller public class ProductController extends JCartSiteBaseController { @Autowired protected CatalogService catalogService; .... .... @RequestMapping(&#34;/products/{sku}&#34;) public String product(@PathVariable String sku, Model model) { Product product = catalogService.getProductBySku(sku); model.addAttribute(&#34;product&#34;, product); return &#34;product&#34;; } } @Service @Transactional public class CatalogService { @Autowired ProductRepository productRepository; .</description>
</item>
<item>
<title>JCart : ShoppingCart Category Page</title>
<link>https://sivalabs.github.io/2015/12/jcart-shoppingcart-category-page/</link>
<pubDate>Wed, 30 Dec 2015 14:23:06 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-shoppingcart-category-page/</guid>
<description>In our Home Page we displayed all the Categories along with few products per each category. When customer clicks on any Category Name we should display Category Page which shows all the products in that Category.
We already have HomeController.category() method to handle the URL /categories/{name}.
So let us create category.html thymeleaf template as follows:
&lt;!DOCTYPE html&gt; &lt;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34; xmlns:th=&#34;http://www.thymeleaf.org&#34; xmlns:sec=&#34;http://www.thymeleaf.org/thymeleaf-extras-springsecurity3&#34; layout:decorator=&#34;layout/mainLayout&#34;&gt; &lt;head&gt; &lt;title&gt;Category&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;div layout:fragment=&#34;content&#34;&gt; &lt;div class=&#34;single-product-area&#34;&gt; &lt;div class=&#34;zigzag-bottom&#34;&gt;&lt;/div&gt; &lt;div class=&#34;container&#34;&gt; &lt;div class=&#34;row&#34;&gt; &lt;div class=&#34;woocommerce-info&#34;&gt; &lt;a href=&#34;&#34; th:href=&#34;@{/}&#34;&gt;Home&lt;/a&gt; / &lt;a href=&#34;&#34; th:href=&#34;@{/categories/{name}(name=${category.</description>
</item>
<item>
<title>JCart : ShoppingCart Home Page</title>
<link>https://sivalabs.github.io/2015/12/jcart-shoppingcart-home-page/</link>
<pubDate>Wed, 30 Dec 2015 14:20:00 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-shoppingcart-home-page/</guid>
<description>In our Home page we will show all the categories along with few of the products in each Category.
Let us update HomeController with two methods to show all the categories and the selected category products.
@Controller public class HomeController extends JCartSiteBaseController { @Autowired protected CatalogService catalogService; @RequestMapping(&#34;/home&#34;) public String home(Model model) { List&lt;Category&gt; previewCategories = new ArrayList&lt;&gt;(); List&lt;Category&gt; categories = catalogService.getAllCategories(); for (Category category : categories) { Set&lt;Product&gt; products = category.</description>
</item>
<item>
<title>JCart : ShoppingCart UI Layout Setup</title>
<link>https://sivalabs.github.io/2015/12/jcart-shoppingcart-ui-layout-setup/</link>
<pubDate>Wed, 30 Dec 2015 14:17:41 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-shoppingcart-ui-layout-setup/</guid>
<description>In this post we will setup the layout for our ShoppingCart UI using Thymeleaf templates.
Download the ustore theme zip file from https://www.freshdesignweb.com/ustora/and copy the following directories/files into jcart-site/src/main/resources/static/assets folder.
css fonts img js style.css Create Site layout thymeleaf template jcart-site/src/main/resources/templates/layout/mainLayout.html as follows:
&lt;!DOCTYPE html&gt; &lt;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34; xmlns:th=&#34;http://www.thymeleaf.org&#34; xmlns:sec=&#34;http://www.thymeleaf.org/thymeleaf-extras-springsecurity3&#34;&gt; &lt;head&gt; &lt;meta charset=&#34;utf-8&#34;/&gt; &lt;meta http-equiv=&#34;X-UA-Compatible&#34; content=&#34;IE=edge&#34;/&gt; &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1&#34;/&gt; &lt;title layout:title-pattern=&#34;$DECORATOR_TITLE - $CONTENT_TITLE&#34;&gt;QuilCart&lt;/title&gt; &lt;!-- Google Fonts --&gt; &lt;link href=&#39;https://fonts.</description>
</item>
<item>
<title>JCart : Initial code setup for ShoppingCart</title>
<link>https://sivalabs.github.io/2015/12/jcart-initial-code-setup-for-shoppingcart/</link>
<pubDate>Wed, 30 Dec 2015 14:15:54 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-initial-code-setup-for-shoppingcart/</guid>
<description>First we will start with setting up the initial code using SpringBoot. We have already discussed in JCart: Initial Code SetUp article about creating a maven module jcart-site which will be our ShoppingCart application. In that article we have shown what springboot dependencies to add as well.
Just to recap we will be using SpringBoot, SpringMVC, Thymeleaf, JPA for our ShoppingCart application.
jcart-site/pom.xml
&lt;project xmlns=&#34;http://maven.apache.org/POM/4.0.0&#34; xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34; xsi:schemaLocation=&#34;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&#34;&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;parent&gt; &lt;groupId&gt;com.</description>
</item>
<item>
<title>JCart : Iteration-4</title>
<link>https://sivalabs.github.io/2015/12/jcart-iteration-4/</link>
<pubDate>Wed, 30 Dec 2015 14:14:40 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-iteration-4/</guid>
<description>In this Iteration-4 we will start building the consumer facing ShoppingCart website.
Initial code setup for ShoppingCart webapp [Configuring HTTPS/SSL/TLS] (/2015/12/jcart-configuring-https-ssltls/) ShoppingCart UI Layout setup Home Page Category Page Product Page Product Search Results </description>
</item>
<item>
<title>JCart Iteration-3 : Manage Categories and Products</title>
<link>https://sivalabs.github.io/2015/12/jcart-iteration-3-manage-categories-and-products/</link>
<pubDate>Sun, 20 Dec 2015 05:58:44 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-iteration-3-manage-categories-and-products/</guid>
<description>In this iteration we will start working on the key requirement of our JCart administration application, ie managing categories and products.
We will create various categories like Birds, Flowers, Vehicles etc. While creating products we will assign it to one of the category.
Managing Categories and Products also looks similar to Manage Roles and Users. But there are few new things we will learn like FileUploading etc.
Create Spring Data JPA Repositories for Category and Product public interface CategoryRepository extends JpaRepository&lt;Category, Integer&gt; { Category getByName(String name); } public interface ProductRepository extends JpaRepository&lt;Product, Integer&gt; { Product findByName(String name); Product findBySku(String sku); @Query(&#34;select p from Product p where p.</description>
</item>
<item>
<title>JCart: Manage Users</title>
<link>https://sivalabs.github.io/2015/12/jcart-manage-users/</link>
<pubDate>Sat, 19 Dec 2015 06:20:55 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-manage-users/</guid>
<description>In our previous post JCart: Manage Roles we have seen how to list all roles, create new roles and update them.
Implementation of Manage Users also follows the same approach and very similar to the Implementation of Manage Roles. So I am not posting details of the implementation here again. Instead you can simply refer the code on JCart github repository https://github.com/sivaprasadreddy/jcart.
If you have any questions regarding the implementation of Manage Users please post a comment.</description>
</item>
<item>
<title>JCart: Manage Roles</title>
<link>https://sivalabs.github.io/2015/12/jcart-manage-roles/</link>
<pubDate>Sat, 19 Dec 2015 03:16:38 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-manage-roles/</guid>
<description>In our previous post Manage Privileges – List all privileges we have implemented the functionality to show list of permissions. In this post we will implement Role management such as listing all Roles, creating new Role, editing Role permissions etc.
Basically a Role is nothing a but group of Permissions assigned so that giving access to a set of action to user will become easy by assigning Roles.
In this post we are going to see lot of code snippets, so I would suggest to clone the repo https://github.</description>
</item>
<item>
<title>JCart: Manage Privileges</title>
<link>https://sivalabs.github.io/2015/12/jcart-manage-privileges/</link>
<pubDate>Fri, 18 Dec 2015 14:32:52 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-manage-privileges/</guid>
<description>This is the simplest usecase of entire JCart admin application :-). We need to show list of permissions configured in our system.
In our system each permission is more like access to a particular screen. For example, If a user has MANAGE_CATEGORIES permission then only he can access “Categories” screen. So these set of permission are something like implemented features set, hence we don&rsquo;t need any provision to add/update/delete permissions dynamically.</description>
</item>
<item>
<title>JCart : Iteration-2</title>
<link>https://sivalabs.github.io/2015/12/jcart-iteration-2/</link>
<pubDate>Fri, 18 Dec 2015 13:38:10 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-iteration-2/</guid>
<description>Now we have completed Iteration-1 tasks. Iteration-1 includes so many tasks to establish the foundation like configuring Spring Security, Thymeleaf settings, UI layout setup etc. I hope from now on we can put more focus on actual tasks implementation rather than infrastructure setup.
Though majority of the infrastructure setup is in place now, we will implement Role Based Access Control (RBAC) security using User-Role-Permission model before jumping on to Category/Product management.</description>
</item>
<item>
<title>Setting up Jenkins/SonarQube</title>
<link>https://sivalabs.github.io/2015/12/setting-up-jenkinssonarqube/</link>
<pubDate>Wed, 16 Dec 2015 14:42:29 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/setting-up-jenkinssonarqube/</guid>
<description>In this post we will setup SonarQube and Jenkins to perform code quality check and continuous integration.
Install and configure SonarQube There are many code quality checking tools like PMD, Firebug but SonarQube brings them all under one roof and gives better view of code quality.
Let us install and configure SonarQube for our JCart application.
Download SonarQube from http://www.sonarqube.org/downloads/.
Extract it run sonarqube-5.2/bin/windows-x86-64/StartSonar.bat.
By default SonarQube uses in-memory H2 database to store all the metrics.</description>
</item>
<item>
<title>JCart: Configuring HTTPS SSL/TLS</title>
<link>https://sivalabs.github.io/2015/12/jcart-configuring-https-ssltls/</link>
<pubDate>Mon, 07 Dec 2015 13:17:45 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-configuring-https-ssltls/</guid>
<description>So far our JCart application is running on Tomcat default port 8080 using HTTP protocol. In this article we will configure to use HTTPS by using Self Signed Certificate. For real projects you would have to buy certificate from a Trusted Authority.
I would like to run ShoppingCart site on https://host:8443 and if anyone tries to access it from http://host:8080 it should redirect to https://host:8443.
Similarly I would like to run Administration site on https://host:9443 and if anyone tries to access it from http://host:9090 it should redirect to https://host:9443.</description>
</item>
<item>
<title>JCart: Admin Reset Password</title>
<link>https://sivalabs.github.io/2015/12/jcart-admin-reset-password/</link>
<pubDate>Sun, 06 Dec 2015 10:41:22 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-admin-reset-password/</guid>
<description>Once the Admin User clicked on Password Reset Link that we sent via Email, we will validate the Token and if is valid then we will show a form to enter New Password, otherwise shows an error.
@Controller public class UserAuthController extends JCartAdminBaseController { ... @RequestMapping(value=&#34;/resetPwd&#34;, method=RequestMethod.GET) public String resetPwd(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes) { String email = request.getParameter(&#34;email&#34;); String token = request.getParameter(&#34;token&#34;); boolean valid = securityService.verifyPasswordResetToken(email, token); if(valid){ model.</description>
</item>
<item>
<title>JCart: Admin Forgot Password</title>
<link>https://sivalabs.github.io/2015/12/jcart-admin-forgot-password/</link>
<pubDate>Sun, 06 Dec 2015 10:34:33 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-admin-forgot-password/</guid>
<description>We will provide a link to Forgot Password in Login page and create jcart-admin/src/main/resources/templates/public/forgotPwd.html template as follows:
&lt;!DOCTYPE html&gt; &lt;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34; xmlns:th=&#34;http://www.thymeleaf.org&#34; layout:decorator=&#34;layout/guestLayout&#34;&gt; &lt;head&gt; &lt;title&gt;Forgot Password&lt;/title&gt; &lt;/head&gt; &lt;body &gt; &lt;div layout:fragment=&#34;content&#34;&gt; &lt;form action=&#34;forgotPwd&#34; th:action=&#34;@{/forgotPwd}&#34; method=&#34;post&#34;&gt; &lt;input type=&#34;email&#34; class=&#34;form-control&#34; name=&#34;email&#34; placeholder=&#34;Email&#34;/&gt; &lt;button type=&#34;submit&#34; class=&#34;btn btn-primary btn-block btn-flat&#34; th:text=&#34;#{label.submit}&#34;&gt;Submit&lt;/button&gt; &lt;/form&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt; When Admin user enters the email address and submit we will generate a token, store it in our DB and generates a Reset Password Link and send it to their email.</description>
</item>
<item>
<title>JCart: Email Service SetUp</title>
<link>https://sivalabs.github.io/2015/12/jcart-email-service-setup/</link>
<pubDate>Sun, 06 Dec 2015 10:23:36 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-email-service-setup/</guid>
<description>We are going to implement Admin User Forgot Password functionality where we need to send the Password Reset link to User email address. So let us look at how to configure Email server and send emails.
Spring provides support for sending Emails using JavaMailSender. SpringBoot makes it even easier by providing a starter for emailing support.
As we need Emailing feature in both Admin and ShoppingCart modules, we will implement the emailing functionality in jcart-core module.</description>
</item>
<item>
<title>JCart: Configuring Spring Security</title>
<link>https://sivalabs.github.io/2015/12/jcart-configuring-spring-security/</link>
<pubDate>Tue, 01 Dec 2015 05:27:15 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-configuring-spring-security/</guid>
<description>Our JCart Administration site should only be accessible to authorized users only. So, we are going to use SpringSecurity to define the security constraints.
Let us add the following spring-security dependencies to jcart-admin/pom.xml.
&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.thymeleaf.extras&lt;/groupId&gt; &lt;artifactId&gt;thymeleaf-extras-springsecurity4&lt;/artifactId&gt; &lt;/dependency&gt; If we have predefined set of Roles then we can specify the URL patterns and its required Roles something like this:
http .authorizeRequests() .antMatchers(&#34;/login&#34;,&#34;/login/form**&#34;,&#34;/register&#34;,&#34;/logout&#34;).permitAll() .antMatchers(&#34;/admin&#34;,&#34;/admin/**&#34;).hasRole(&#34;ADMIN&#34;) .anyRequest().authenticated() .and() But we need provision to dynamically create new roles as well, hence we can&rsquo;t statically define constraints using role names.</description>
</item>
<item>
<title>JCart: Admin UI Layout SetUp</title>
<link>https://sivalabs.github.io/2015/12/jcart-admin-ui-layout-setup/</link>
<pubDate>Tue, 01 Dec 2015 04:38:56 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-admin-ui-layout-setup/</guid>
<description>As I am not really a good UI designer I searched for a free good looking UI website Admin templates and I found this fantastic template https://almsaeedstudio.com/preview. We will be using this template for our Administration web application.
We are going to use Thymeleaf templates for our View layer. Thymeleaf offers facelets style templating mechanism. Basically we need 2 layout templates, one for unauthorized views like Login/ForgotPassword etc and another for authorized users.</description>
</item>
<item>
<title>JCart: Create JPA Entities</title>
<link>https://sivalabs.github.io/2015/12/jcart-create-jpa-entities/</link>
<pubDate>Tue, 01 Dec 2015 04:26:41 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-create-jpa-entities/</guid>
<description>We are going to create the JPA Entities for the database tables we designed.
@Entity @Table(name=&#34;users&#34;) public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Column(nullable=false) @NotEmpty() private String name; @Column(nullable=false, unique=true) @NotEmpty @Email(message=&#34;{errors.invalid_email}&#34;) private String email; @Column(nullable=false) @NotEmpty @Size(min=4) private String password; private String passwordResetToken; @ManyToMany(cascade=CascadeType.MERGE) @JoinTable( name=&#34;user_role&#34;, joinColumns={@JoinColumn(name=&#34;USER_ID&#34;, referencedColumnName=&#34;ID&#34;)}, inverseJoinColumns={@JoinColumn(name=&#34;ROLE_ID&#34;, referencedColumnName=&#34;ID&#34;)}) private List&lt;Role&gt; roles; //setters &amp; getters } @Entity @Table(name=&#34;roles&#34;) public class Role { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Column(nullable=false, unique=true) @NotEmpty private String name; @Column(length=1024) private String description; @ManyToMany(mappedBy=&#34;roles&#34;) private List&lt;User&gt; users; @ManyToMany @JoinTable( name=&#34;role_permission&#34;, joinColumns={@JoinColumn(name=&#34;ROLE_ID&#34;, referencedColumnName=&#34;ID&#34;)}, inverseJoinColumns={@JoinColumn(name=&#34;PERM_ID&#34;, referencedColumnName=&#34;ID&#34;)}) private List&lt;Permission&gt; permissions; //setters &amp; getters } @Entity @Table(name=&#34;permissions&#34;) public class Permission { @Id @GeneratedValue(strategy=GenerationType.</description>
</item>
<item>
<title>JCart: Domain Modelling and Database Designing</title>
<link>https://sivalabs.github.io/2015/12/jcart-domain-modelling-and-database-designing/</link>
<pubDate>Tue, 01 Dec 2015 04:22:19 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-domain-modelling-and-database-designing/</guid>
<description>While developing database driven applications using some ORM framework, some people prefer Object first approach and others follow DB first approach. I prefer DB first approach.
So, let us start listing down all the domain entities in our JCart application domain.
Product Category Customer Order OrderItem Cart Address User Role Permission Let us create the database tables as follows:
Though we identified Cart as a domain entity, we are not creating the table for holding the Cart details.</description>
</item>
<item>
<title>JCart: Initial Code SetUp</title>
<link>https://sivalabs.github.io/2015/12/jcart-initial-code-setup/</link>
<pubDate>Tue, 01 Dec 2015 04:14:09 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-initial-code-setup/</guid>
<description>Let us create a root pom type maven project with 3 sub-modules jcart-core, jcart-admin and jcart-site.
jcart-core module will contain all the core logic excluding web related stuff.
jcart-admin module will contain all the administration related web functionality like Controllers, Security, Validators etc.
jcart-site module will contain all the shoppingcart related web functionality like Controllers, Security, Validators etc.
All these modules use SpringBoot, but as of now STS/IntellijIdea are not providing option to create multi-module SpringBoot application, we will be creating Maven modules and then configure SpringBoot dependencies manually.</description>
</item>
<item>
<title>JCart : Iteration-1</title>
<link>https://sivalabs.github.io/2015/12/jcart-iteration-1/</link>
<pubDate>Tue, 01 Dec 2015 04:10:08 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/12/jcart-iteration-1/</guid>
<description>Now that we have completed the most difficult part (writing Introduction to technical article series is much harder than you think!!), so let&rsquo;s start the fun part. Coding!!!
Note: It is going to be a fast paced tutorial. Obviously we can&rsquo;t cover every little bit of all the technologies used in our application. So I would suggest to explore more on individual technologies like Spring, Thymeleaf on your own.</description>
</item>
<item>
<title>Setting up the Development Environment for JCart</title>
<link>https://sivalabs.github.io/2015/11/setting-up-the-development-environment-for-jcart/</link>
<pubDate>Tue, 24 Nov 2015 04:34:03 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/11/setting-up-the-development-environment-for-jcart/</guid>
<description>For our JCart application development we will be using the following Softwares/Tools.
JDK 8 SpringSource Tool Suite (STS) MySQL Git Maven Jenkins SonarQube Apache/Nginx WebServer I am not going to explain how to install JDK or MySQL because there are plenty of articles you can find on internet.
If you are using Ubuntu based Linux Operating System then you can refer my article My Development Environment Setup on Linux to setup Java development tool chain.</description>
</item>
<item>
<title>JCart Release Planning</title>
<link>https://sivalabs.github.io/2015/11/jcart-release-planning/</link>
<pubDate>Tue, 24 Nov 2015 04:26:20 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/11/jcart-release-planning/</guid>
<description>In our previous article JCart Requirements Analysis we have listed out all the requirements that we need to implement for JCart application. Now we need to come up with an implementation and release plan. As we are following iteration model, we will plan for N iterations where in each iteration we will implement some usecases.
After listing out all the implementation tasks and based on the task dependencies, we came up with the following Iteration plan.</description>
</item>
<item>
<title>Selecting The Technology Stack for JCart</title>
<link>https://sivalabs.github.io/2015/11/selecting-the-technology-stack-for-jcart/</link>
<pubDate>Sun, 22 Nov 2015 05:17:20 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/11/selecting-the-technology-stack-for-jcart/</guid>
<description>Selecting the right technology stack is very crucial and plays an important role in project success. Many of the architects (unknowingly??!!) try to make complex designs by trying to use all kinds of latest and greatest stuff. On the other hand some architects try to be in their comfort zone by limiting their technology stack to the technologies with which they are comfortable. Both approaches are dangerous. One should understand the business needs and pick the technologies that are necessary for project.</description>
</item>
<item>
<title>JCart Requirements Analysis</title>
<link>https://sivalabs.github.io/2015/11/jcart-requirements-analysis/</link>
<pubDate>Sat, 21 Nov 2015 11:29:54 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/11/jcart-requirements-analysis/</guid>
<description>For building our JCart e-commerce application we will develop two web applications, one for ShoppingCart and another one for Administration. Let us explore the requirements of both ShoppingCart and Administration websites in detail.
ShoppingCart Site Requirements Home Page:This page shows list of categories and few products in each category. From this screen customers can click on any Category name to see all the products in that particular category or can add a product to cart.</description>
</item>
<item>
<title>Introducing the application JCart</title>
<link>https://sivalabs.github.io/2015/11/introducing-the-application-jcart/</link>
<pubDate>Sat, 21 Nov 2015 02:28:23 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/11/introducing-the-application-jcart/</guid>
<description>As I promised in my article Developing a simple e-commerce application from scratch to production using SpringBoot , I am starting first post by introducing the application JCart that we are going to build.
One of my friend makes quilling toys and she sell them by advertising on Facebook or through word of mouth. Now she is getting more and more customers and she wants to expand her business by going online.</description>
</item>
<item>
<title>Developing a simple e-commerce application from scratch to production using SpringBoot</title>
<link>https://sivalabs.github.io/2015/11/developing-a-simple-e-commerce-application-from-scratch-to-production-using-springboot/</link>
<pubDate>Fri, 20 Nov 2015 14:18:35 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/11/developing-a-simple-e-commerce-application-from-scratch-to-production-using-springboot/</guid>
<description>We can find plenty of information on any technical topic, be it Java, .NET, Python or any frameworks like Spring, Hibernate, CDI, JSF etc. You can find hundreds of well written blogs on many of these topics. For example, you can find lot of tutorials on how to use SpringBoot or how to use various mappings in JPA/Hibernate or how to do form validations in JSF etc. Also, there are plenty of books published by well established publishers on most of the technologies.</description>
</item>
<item>
<title>My Development Environment Setup on Linux</title>
<link>https://sivalabs.github.io/2015/10/my-development-environment-setup-on-linux/</link>
<pubDate>Tue, 13 Oct 2015 02:07:05 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/10/my-development-environment-setup-on-linux/</guid>
<description>As I mentioned in my previous post Thinking of moving from Windows to Linux? I am moving from Windows to Linux. Setting up my development environment is a bit tedious because I have to hunt down the applications and execute various commands to setup. So I thought of make a note of them in a post so that it will be easier for me next time.
I am using Ubuntu/LinuxMint system so I am using apt-get to install, if you are using Fedora/CentOS you can use yum/dnf.</description>
</item>
<item>
<title>How to SSH into VirtualBox Linux OS?</title>
<link>https://sivalabs.github.io/2015/10/how-to-ssh-into-virtualbox-linux-os/</link>
<pubDate>Tue, 13 Oct 2015 02:05:05 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/10/how-to-ssh-into-virtualbox-linux-os/</guid>
<description>While learning some of the Linux commands we may want to use SSH commands to login into a remote Linux system and we may not have a dedicated Linux system to play with.
In this post I will explain how I am using my Linux OS installed on VirtualBox to SSH from Windows OS.
1. Install openssh-server on Linux OS in VirtualBox sudo apt-get install openssh-server
On some Linux distros (ex: Fedora) the openssh server won&rsquo;t start automatically.</description>
</item>
<item>
<title>Thinking of moving from Windows to Linux?</title>
<link>https://sivalabs.github.io/2015/10/thinking-of-moving-from-windows-to-linux/</link>
<pubDate>Tue, 13 Oct 2015 02:02:30 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/10/thinking-of-moving-from-windows-to-linux/</guid>
<description>I have been using Windows operating system from the beginning. When I first started using computer Windows XP was the latest operating system and it was amazing. After few years I started my career as a Java developer and in my office also I have been using Windows only.
After few years Windows Vista got released and I suffered with it for few months and then Microsoft released Windows 7 which is the best Windows operating system IMO.</description>
</item>
<item>
<title>My Life as a Software Developer in India</title>
<link>https://sivalabs.github.io/2015/07/my-life-as-software-developer-in-india/</link>
<pubDate>Mon, 06 Jul 2015 16:17:00 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/07/my-life-as-software-developer-in-india/</guid>
<description>I am Siva, working as a Software Developer in Hyderabad, India. Working as a Software Developer is very exciting as you see new things coming in everyday. If there are no new things at least we put a new fancy name to some old concept and celebrate (#microservices) :-). But in my opinion working as a Software Developer in India is little bit different and hard too. Few things are good, and few things are bad.</description>
</item>
<item>
<title>A Developers Perspective on Spring vs JavaEE</title>
<link>https://sivalabs.github.io/2015/06/a-developers-perspective-on-spring-vs-javaee/</link>
<pubDate>Mon, 15 Jun 2015 13:04:00 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/06/a-developers-perspective-on-spring-vs-javaee/</guid>
<description>In Java community Spring vs JavaEE is a never ending debate. In such debates people form two groups consisting of evangelists, architects and hard core fans of one platform and debate endlessly. Those who participate in the debates may be architects who are responsible for platform selection. But what would developers think about this Spring vs JavaEE debate?
I am a Java developer who uses both Spring and JavaEE and I am not part of Spring or JavaEE fan club.</description>
</item>
<item>
<title>Core Java Training</title>
<link>https://sivalabs.github.io/trainings/corejava/</link>
<pubDate>Sun, 31 May 2015 13:07:25 +0000</pubDate>
<guid>https://sivalabs.github.io/trainings/corejava/</guid>
<description>This Core Java training aims at the beginners who want to learn Java programming starting from scratch.
Please email me at sivaprasadreddy.k@gmail.com for further details.
Core Java Course Topics: Java Programming Fundamentals Introduction to Java Programming OOPS concepts What are JDK, JVM, JRE? Java Basics DataTypes, Operators, Statements Classes, Interfaces, Objects Abstract, Static, final etc public, private, protected modifiers, Access specifiers Inheritance package, import Enum, Annotations Control Structures if-else, while, for, switch etc Exception Handling try-catch-finally checked-vs-unchecked exceptions Java Collections framework List, Set, Map etc Sorting, Filtering Searching Java Generics Parameterized Collections Java lang/util packages, File I/O String, StringTokenizer, Date Regular Expressions File Reader/Writer, Input/Output Streams etc Multi Threading Thread, Runnable Synchronization Database Programming with JDBC Connecting to MySQL Database Performing Read, Write, Update, Delete operations Transaction Management Introduction to Java 8 features Lambdas Streams DateTime API Servlets Introduction to Web application development and Servlets Servlet Life Cycle HttpServlet Request, Response, Session, ServletContext Deployment descriptor web.</description>
</item>
<item>
<title>Spring Boot Training</title>
<link>https://sivalabs.github.io/trainings/springboot/</link>
<pubDate>Sun, 31 May 2015 13:07:25 +0000</pubDate>
<guid>https://sivalabs.github.io/trainings/springboot/</guid>
<description>This Spring Boot training aims at Java developers who want to learn Spring and SpringBoot starting from scratch.
Please email me at sivaprasadreddy.k@gmail.com for further details.
Spring Boot Course Topics: Introduction to Spring Framework
Spring Framework Overview Introducing IOC/DI, AOP Spring Portfolio Projects (Spring Security, Spring Data, Spring Integration, Spring Batch etc) Introduction to SpringBoot
Auto Configuration DevTools Dependency Injection using Spring</description>
</item>
<item>
<title>Contact</title>
<link>https://sivalabs.github.io/contact/</link>
<pubDate>Sun, 31 May 2015 13:06:31 +0000</pubDate>
<guid>https://sivalabs.github.io/contact/</guid>
<description>You can reach me at:
Twitter: https://twitter.com/sivalabs
GitHub: https://github.com/sivaprasadreddy</description>
</item>
<item>
<title>CentOS 7 Installation on Oracle Virtualbox</title>
<link>https://sivalabs.github.io/2015/05/centos-7-installation-on-oracle-virtualbox/</link>
<pubDate>Mon, 11 May 2015 07:36:00 +0000</pubDate>
<guid>https://sivalabs.github.io/2015/05/centos-7-installation-on-oracle-virtualbox/</guid>
<description>I wanted to explore CentOS 7 Linux, so I installed it on my Oracle VirtualBox. Installation went smoothly ,but I had a hard time to install Virtualbox Guest Additions to get full screen. I thought of sharing the steps I performed so that it may be helpful for others.
After installing CentOS 7, before installing Virtualbox Guest Additions first thing we need to do is update system.
sudo yum update</description>
</item>
<item>
<title>My Linux Journey Begins</title>
<link>https://sivalabs.github.io/2015/05/my-linux-journey-begins/</link>