Understanding Spring Web Initialization

Few years ago majority of us were used to write XML config files everywhere, to setup even simple Java EE application. Today using Java or Groovy to configure projects is becoming preferred way - you just need to take a look at Gradle or functionalities introduced in further versions of the Spring Framework to gen up on this.

Now I'll deal with configuring Spring contexts for web application.

Java EE provides ServletContainerInitializer interface, which allows libraries to be notified of a web application startup. Since Spring 3.1 we have SpringServletContainerInitializer class which handles WebApplicationInitializer by instantiating all found classes implementing this interface, sorting them basing on @Order annotation (non-annotated classes gets the highest possible order, so they are processed at the end) and invoking onStartup() method.


Spring since version 3.2 provides us a few classes implementing WebApplicationInitializer interface, from which first is AbstractContextLoaderInitializer. This class included in spring-web module uses abstract createRootApplicationContext() method to create application context, delegates it to ContextLoaderListener which then is being registered in the ServletContext instance. Creating application context using this class looks as follows:
public class SpringAnnotationWebInitializer
  extends AbstractContextLoaderInitializer {

  @Override
  protected WebApplicationContext createRootApplicationContext() {
    AnnotationConfigWebApplicationContext applicationContext =
      new AnnotationConfigWebApplicationContext();
    applicationContext.register(SpringAnnotationConfig.class);
    return applicationContext;
  }

}

That was the simplest way to start up Spring web context. But if we want to experience benefits provided by Spring MVC and don't want to manually register DispatcherServlet it'll be better to use another class: AbstractDispatcherServletInitializer. It extends previous class and adds two abstract methods: createServletApplicationContext() and getServletMappings().  First method returns WebApplicationContext that will be passed to DispatcherServlet, which will be automatically added into container ServletContext. Please notice that this context will be established as a child of the context returned by createRootApplicationContext() method. Second method - as you have probably already deduced - returns mappings that are used during servlet registration. You can also override getServletFilters() method if you need any custom filters, because default implementation returns just empty array. Exemplary implementation using this class could be:
public class SpringWebMvcInitializer
  extends AbstractDispatcherServletInitializer {

  @Override
  protected WebApplicationContext createRootApplicationContext() {
    AnnotationConfigWebApplicationContext applicationContext =
      new AnnotationConfigWebApplicationContext();
    applicationContext.register(SpringRootConfig.class);
    return applicationContext;
  }

  @Override
  protected WebApplicationContext createServletApplicationContext() {
    AnnotationConfigWebApplicationContext applicationContext =
      new AnnotationConfigWebApplicationContext();
    applicationContext.register(SpringMvcConfig.class);
    return applicationContext;
  }

  @Override
  protected String[] getServletMappings() {
    return new String[]{"/*"};
  }

}

And now last but definitely not least class: AbstractAnnotationConfigDispatcherServletInitializer. Here we can see further step in simplifying Spring initialization - we don't need to manually create contexts but just set appropriate config classes in getRootConfigClasses() and getServletConfigClasses() methods. I hope you are already familiar with those names, because they works exactly like in the former case. Of course due to this class extends AbstractDispatcherServletInitializer we can still override getServletFilters(). Finally we can implement our configuration in the following way:
public class SpringWebMvcSimpleInitializer
  extends AbstractAnnotationConfigDispatcherServletInitializer {

  @Override
  protected Class<?>[] getRootConfigClasses() {
    return new Class[] {SpringRootConfig.class};
  }

  @Override
  protected Class<?>[] getServletConfigClasses() {
    return new Class[] {SpringMvcConfig.class};
  }

  @Override
  protected String[] getServletMappings() {
    return new String[]{"/*"};
  }

}

If you like to see wider context please follow examples in my GitHub repo: https://github.com/jkubrynski/spring-java-config-samples/

Comments

nanosik said…
Great job Kuba, as always :)
Unknown said…
Spring Boot is also a great addition to the Spring family especially for smaller projects and on the beginning of the development.
Unknown said…
You're right, but problem with Spring Boot are big lacks in documentation. Unfortunatelly recently we had to abamdon it due to interation testing problems. But iI think that Comditional introduced in Spring 4 is really powerful and it will move development simplification to the next level :)
del65 said…
Spring Roo is also a great way to start and configure a simple Spring project from scratch (and update it afterwards).
Unknown said…
The problem with Spring Roo is that it generates code that your have to maintain later. Spring Boot is operating on "convention over configuration" and that's its power :)
sanjeev sinha said…
Hello,

I tried the same.

In my case the getRootConfigClasses does not return the ApplicationConfig class where I do the JPA config.What could be the potential reason behind that.
This how the logs is:
6:38:35,992 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/odb]] (ServerService Thread Pool -- 139) Spring WebApplicationInitializers detected on classpath: [com.amadeus.odb.config.RestWebApplicationInitializer2@366a0fd0]
16:38:36,107 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/odb]] (ServerService Thread Pool -- 139) Initializing Spring FrameworkServlet 'dispatcher',

Then I was expecting Persistence unit log to appear, which is not happening.
An hint would be of great help.
Thanks
Sanjeev.
Unknown said…
Sanjeev - could you provide more details? Maybe you're able to share some code on Github?
Unknown said…
Any suggestion about how the java configuration will change in case we want to use Spring Data with MongoDB for web application...I surf the web ( i found ton of example using web.xml or *-servlet.xml) but did not find any good example which give good information about java configuration for Spring Data, MongoDB and ThymeLeaf based web application....
Unknown said…
@Mayur in your case you just have to create @Configuration extending AbstractMongoConfiguration and annotate it by @EnableMongoRepositories. Please check this article: http://java.dzone.com/articles/how-use-spring-data-mongodb
Edward Beckett said…
"You're right, but problem with Spring Boot are big lacks in documentation."

This is one of the biggest problems I've had trying to migrate to Spring Boot. I look at projects developed on Spring Boot, such as jhipster and immediately think, "How did they know how to implement this functionality?"

Without knowing 'Spring' Spring boot won't get you very far at all..
Unknown said…
Edward - now it's much better with Spring Boot documentation - there is even stable version of Spring Boot. I was writing it one year ago :)
Unknown said…
I had to change

@Override
protected String[] getServletMappings() {
return new String[]{"/*"};
}

to

@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}

to make form logins work. So without the "*"
Auréliusz said…
That's exactly what I did, but I ran into that
No mapping found for HTTP request with URI [/helloworld.jsp] in DispatcherServlet with name 'dispatcherServlet'
Unknown said…
Hi,
Actually I am trying to initialize ApplicationContext and SecurityConfig using java config. But I am getting error like 'Cannot initialize context because there is already a root application context present - " + "check whether you have multiple ContextLoader'. How to resolve this issue in spring using java configuration.

Any help is appreciated.
Krzysztof said…
Hi,

simply and clever. I like it.
Ram Niwas said…
This comment has been removed by the author.
rana said…
This is a very amazing post for cheap web hosting services. in this post, you have provided all the basic information regarding.
website builder for reseller
rana said…
Comfortabl y, the post is really the freshest on that deserving topic. I harmonise with your conclusions and definitely will thirstily look forward to your next updates.

private label website builder
rana said…
Thank you for the link building list.I am going jot down this because it will help me a lot.Great blog! Please keep on posting such blog.

white label website builder
JJ-Spring said…
How do you do the same in spring boot?
Laura Bush said…
I really like and appreciate your work which is about java course. The article you have shared here is great. I read your post with carefully, the points you mentioned can be very helpful. It is nice seeing your wonderful post. Best Advanced Java Course in Delhi
Mani Mekalai said…
This comment has been removed by the author.
raj khan said…
Soma pill is very effective as a painkiller that helps us to get effective relief from pain. This cannot cure pain. Yet when it is taken with proper rest, it can offer you effective relief from pain.
This painkiller can offer you relief from any kind of pain. But Soma 350 mg is best in treating acute pain. Acute pain is a type of short-term pain which is sharp in nature. Buy Soma 350 mg online to get relief from your acute pain.

https://globalonlinepills.com/product/soma-350-mg/


Buy Soma 350 mg
Soma Pill
Buy Soma 350 mg online



Buy Soma 350 mg online
Soma Pill
Buy Soma 350 mg
james john said…
The article was up to the point and described the information very effectively. Thanks to blog author for wonderful and informative post.
website development Pakistan
Adhuntt said…
Great blog thanks for sharing Masters of building brands, Adhuntt Media is making waves in the Chennai digital market! Known for their out of their box ideas, if a creative overhaul for your brand is what you need, you’ve come to the right place. Right from Search Engine Optimization-SEO to Social Media Marketing, Adhuntt Media is your pitstop for original brand identity creation from scratch.
digital marketing agency in chennai

Karuna said…
Nice blog thanks for sharing Join the Karuna Nursery Garden family and be a part of our network of home gardeners. We can help you setup the perfect front yard for your family to relax in. Reach us out to get more information on our terrace garden consultants in Chennai too.
plant nursery in chennai
Pixies said…
Excellent blog thanks for sharing Looking for the best place in Chennai to get your cosmetics at wholesale? The Pixies Beauty Shop is the premium wholesale cosmetics shop in Chennai that has all the international brands your salon deserves.
beauty Shop in Chennai
Nannie Co Pam said…
Great Article. Thank you for sharing! Really an awesome post for every one.

IEEE Final Year projects Project Centers in Chennai are consistently sought after. Final Year Students Projects take a shot at them to improve their aptitudes, while specialists like the enjoyment in interfering with innovation. For experts, it's an alternate ball game through and through. Smaller than expected IEEE Final Year project centers ground for all fragments of CSE & IT engineers hoping to assemble. Final Year Project Domains for IT It gives you tips and rules that is progressively critical to consider while choosing any final year project point.

Spring Framework has already made serious inroads as an integrated technology stack for building user-facing applications. Spring Framework Corporate TRaining the authors explore the idea of using Java in Big Data platforms.
Specifically, Spring Framework provides various tasks are geared around preparing data for further analysis and visualization. Spring Training in Chennai
Tuhin said…
keep up the good work. this is an Assam post. this to helpful, i have reading here all post. i am impressed. thank you. this is our digital marketing training center. This is an online certificate course
digital marketing training in bangalore | https://www.excelr.com/digital-marketing-training-in-bangalore
Jack sparrow said…

This post is really nice and informative. The explanation given is really comprehensive and informative. I also want to say about the seo course online
Indpac said…
Very useful blog thanks for sharing IndPac India the German technology Packaging and sealing machines in India is the leading manufacturer and exporter of Packing Machines in India.

Anonymous said…
Thanks for the interesting blog that you have implemented here. Very helpful and innovative. Waiting for your next upcoming article.
Java training in chennai
Java training institute in chennai
Java course in chennai
Java training classes
Java training
Java programming classes
core java coure
<a

w3webschool said…
Great Article. Thank you for sharing! Really an awesome post for every one.
Digital Marketing Course In Kolkata
Web Design Course In Kolkata
dataexpert said…
Great post i must say and thanks for the information. Education is definitely a sticky subject. However, is still among the leading ExcelR Digital Marketing Class In Pune topics of our time. I appreciate your post and look forward to more.
CloudLearn ERP said…
You must have a lot of pride in writing quality content. I'm impressed with the amount of solid information you have written in your article. I hope to read more.
Best Data Science training in Mumbai

Data Science training in Mumbai
ek said…
This is an awesome motivating article. I am practically satisfied with your great work. You put truly extremely supportive data. Keep it up. Continue blogging. Hoping to be perusing your next post
Courses in Digital Marketing in Pune
Indhu said…
Thanks for sharing this wonderful informations.
android training institutes in coimbatore

amazon web services training in coimbatore

big data training in coimbatore

C and C++ training in coimbatore

Blue prism training in coimbatore

artificial intelligence training in coimbatore

RPA Course in coimbatore
interiorworld said…
You are so interesting! I don't believe I've truly read through anything like that before. So wonderful to discover another person with a few unique technology thoughts on this issue. Seriously.. many thanks for starting this up. This website is something that is required on the internet, someone with a bit of originality!
Anonymous said…
Nice article, keep sharing
Forum.app
Jobs
Jedox
Anebellyliza said…
Nice Blog ! It was really a nice article and i was really impressed by reading this. Thanks for sharing such detailed information.
Data Science Training in Hyderabad
Janu said…

I feel very grateful that I read this. It is very helpful and very informative and I really learned a lot from it.



Dot Net Training in Chennai | Dot Net Training in anna nagar | Dot Net Training in omr | Dot Net Training in porur | Dot Net Training in tambaram | Dot Net Training in velachery





Anirban Ghosh said…
It's very nice to find out other writers share like minds on some content. This is the case with your article. I really enjoyed this.
SAP training in Kolkata
SAP training Kolkata
Best SAP training in Kolkata
SAP course in Kolkata
SAP training institute Kolkata

Vale Co Xenia said…
The development of artificial intelligence (AI) has propelled more programming architects, information scientists, and different experts to investigate the plausibility of a vocation in machine learning. Notwithstanding, a few newcomers will in general spotlight a lot on hypothesis and insufficient on commonsense application. machine learning projects for final year In case you will succeed, you have to begin building machine learning projects in the near future.

Projects assist you with improving your applied ML skills rapidly while allowing you to investigate an intriguing point. Furthermore, you can include projects into your portfolio, making it simpler to get a vocation, discover cool profession openings, and Final Year Project Centers in Chennai even arrange a more significant compensation.


Data analytics is the study of dissecting crude data so as to make decisions about that data. Data analytics advances and procedures are generally utilized in business ventures to empower associations to settle on progressively Python Training in Chennai educated business choices. In the present worldwide commercial center, it isn't sufficient to assemble data and do the math; you should realize how to apply that data to genuine situations such that will affect conduct. In the program you will initially gain proficiency with the specialized skills, including R and Python dialects most usually utilized in data analytics programming and usage; Python Training in Chennai at that point center around the commonsense application, in view of genuine business issues in a scope of industry segments, for example, wellbeing, promoting and account.
kenwood said…
Today's business marketplace is driven by tons of data. In fact, data is an important aspect of all industries as date offers plenty of useful information that helps businesses make important decisions. machine learning institute in hyderabad
mary Brown said…
Great Article
Cyber Security Projects

projects for cse

Networking Projects

JavaScript Training in Chennai

JavaScript Training in Chennai

The Angular Training covers a wide range of topics including Components, Angular Directives, Angular Services, Pipes, security fundamentals, Routing, and Angular programmability. The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training
dexterous said…
Thanks for sharing such a great information..Its really nice and informative..

GMAT online preparation
GMAT training in hyderabad
CAT Coaching in hyderabad
joeharis said…
PHP advancement is a well-known scripting language that is utilized to make intelligent and dynamic sites. Today, most business sites are made by utilizing php application development as it accompanies profoundly practical highlights and ease of use. So, organizations ready to make a customer's site with amazing information the executives highlights will require to recruit php development company. Our prime php website development improvement administrations start with understanding the client needs and stretches out to database driven top of the line custom undertaking web frameworks. Recruit devoted PHP engineers from Colan Infotech to plan php web development utilizing Photoshop, Flash etc. The php development India advancement administrations we offer are recorded underneath:
Ramya said…
Amazing and interesting blog found to be well written in a simple manner that everyone will understand and gain the enough knowledge from your blog being more informative is an added advantage for the users who are going through it. Once again nice blog keep it up.
DevOps Training in Chennai

DevOps Online Training in Chennai

DevOps Training in Bangalore

DevOps Training in Hyderabad

DevOps Training in Coimbatore

DevOps Training

DevOps Online Training
THE BEST AGENCY SERVING CLIENTS COUNTRYWIDE
Located in Delhi, Webmarts is a professionally managed digital marketing agency offering a host of demanding services. We offer SEO services, web development, web designing, social media marketing, and more services to clients in different businesses.

Best SEO Company in Delhi
Best seo services in Delhi
Best seo agency in Delhi
Seo service in Delhi
Seo service provider in Delhi
Top rated seo service provider in Delhi
Best seo company in Jankpuri
Best seo company in uttamnagar
Best seo company in Tilak nagar
nisharoshan said…
I'm not one of those readers that comments on articles often, but yours really compelled me. There's a lot of interesting content in this article that is interesting and bold.
Web Designing Training in Bangalore

Web Designing Course in Bangalore

Web Designing Training in Hyderabad

Web Designing Course in Hyderabad

Web Designing Training in Coimbatore

Web Designing Training

Web Designing Online Training

Anirban Ghosh said…
The content that I normally go through in the recent times is nothing like what you have on paper. Thank you for writing this!
SAP training in Kolkata
SAP training Kolkata
Best SAP training in Kolkata
SAP course in Kolkata
python training said…
it’s really nice and meanful. it’s really cool blog. Linking is very useful thing.you have really helped lots of people who visit blog and provide them usefull information.
Data Science Training in Hyderabad

I am really happy to say it’s an interesting post to read . I learn new information from your article , you are doing a great job . Keep it up

Devops Training in USA

Hadoop Training in Hyderabad

Python Training in Hyderabad
python training said…
it’s really nice and meanful. it’s really cool blog. Linking is very useful thing.you have really helped lots of people who visit blog and provide them usefull information.
Data Science Training in Hyderabad

I am really happy to say it’s an interesting post to read . I learn new information from your article , you are doing a great job . Keep it up

Devops Training in USA

Hadoop Training in Hyderabad

Python Training in Hyderabad
svrtechnologies said…

Firstly talking about the Blog it is providing the great information providing by you . Thanks for that .Hope More articles from you . Next i want to share some information about Salesforce training in Banglore .
Farhan.Jee said…
A spreadsheet is prepared to evaluate the profit margins and thoroughly compare the cost-per-click with average order price and customer lifetime value. data science course syllabus
svrtechnologies said…

Firstly talking about the Blog it is providing the great information providing by you . Thanks for that .Hope More articles from you . Next i want to share some Information about Salesforce training in Hyderabad .

Ashok said…
Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing.
Artificial Intelligence Course
jhansi said…
Thank you for sharing the article. The data that you provided in the blog is informative and effective.
tally training in chennai

hadoop training in chennai

sap training in chennai

oracle training in chennai

angular js training in chennai


Arbaz Ali said…
here you can get more information about joining the Pakistan navy
https://joinpaknavy.site/
saketh321 said…
I want to say thanks to you. I have bookmark your site for future updates. ExcelR Data Analyst Course
shreejahealth said…
Shreeja Health Care is leading manufacturer of Oil Maker Machine. Shreeja Oil Extraction Machine is able to extract oil from various seeds like peanuts, Coconut, Sesame, Soybean, macadamia nuts, walnuts, sunflower seeds, vegetable seeds flaxseed etc.
Keytax said…
Keytexmachines is leading CNC Machining Job Work in surat With Excellent Quality, Cost Effective Price & Prompt Delivery. CNC Machining Job Work, CNC Turning Job Work, CNC Machine Service offered by Keytex machines, Surat.
Yami immigration is a well-known and experienced immigration consultant in Surat. We provide Immigration Services for many countries such as Italy, Canada, France, Australia, Germany, USA, Malaysia, New Zealand, and Singapore.

Dr Galani said…
Dr. Vivek Galani is a leading expert in skin and hair. At hair transplant clinic in Surat Skin Care, Cosmetic Laser, Hair Transplant & Slimming Center, Dr. Galani offers the most advanced cosmetic and dermatologic care treatments. The clinic uses advanced FUE methods to produce high-quality hair transplants.
shreejahealth said…
Shreeja Health Care is leading manufacturer of Oil Maker Machine. Shreeja Oil Extraction Machine is able to extract oil from various seeds like peanuts, Coconut, Sesame, Soybean, macadamia nuts, walnuts, sunflower seeds, vegetable seeds flaxseed et.
Wonderful blog found to be very impressive to come across such an awesome blog. I should really appreciate the blogger for the efforts they have put in to develop such an amazing content for all the curious readers who are very keen of being updated across every corner. Ultimately, this is an awesome experience for the readers. Anyways, thanks a lot and keep sharing the content in future too.

Digital Marketing training in Bhilai
DigiDaddy World said…
Thank you for sharing this valuable content.
I love your content it's very unique.
DigiDaddy World
Stupendous blog huge applause to the blogger and hoping you to come up with such an extraordinary content in future. Surely, this post will inspire many aspirants who are very keen in gaining the knowledge. Expecting many more contents with lot more curiosity further.

Digital Marketing training in Raipur
Wonderful blog found to be very impressive to come across such an awesome blog. I should really appreciate the blogger for the efforts they have put in to develop such an amazing content for all the curious readers who are very keen of being updated across every corner. Ultimately, this is an awesome experience for the readers. Anyways, thanks a lot and keep sharing the content in future too.

Digital Marketing Course
python training said…
I am really happy to say it’s an interesting post to read . I learn new information from your article , you are doing a great job . Keep it up

Devops Training in Hyderabad

Hadoop Training in Hyderabad

Python Training in Hyderabad

Tableau Training in Hyderabad

Selenium Training in Hyderabad
shreejahealth said…
Shreeja Health Care is leading manufacturer of Oil Maker Machine. Shreeja Oil Extraction Machine is able to extract oil from various seeds like peanuts, Coconut, Sesame, Soybean, macadamia nuts, walnuts, sunflower seeds, vegetable seeds flaxseed etc.
rstrainings said…

I am really happy to say it’s an interesting post to read . I learn new information from your article , you are doing a great job . Keep it up

Devops Training in Hyderabad

Hadoop Training in Hyderabad

Python Training in Hyderabad

Tableau Training in Hyderabad

Selenium Training in Hyderabad
Marty Sockolov said…
With special privileges and services, UEFA BET offers opportunities for small capitalists. Together ufa with the best websites that collect the most games With a minimum deposit starting from just 100 baht, you are ready to enjoy the fun with a complete range of betting that is available within the website

ufabet , our one another option We are a direct website, not through an agent, where customers can have great confidence without deception The best of online betting sites is that our Ufa will give you the best price

หาคุณกำลังหาเกมส์ออนไลน์ที่สามารถสร้างรายได้ให้กับคุณ เรามีเกมส์แนะนำ เกมยิงปลา รูปแบบใหม่เล่นง่ายบนมือถือ คาสิโนออนไลน์ บนคอม เล่นได้ทุกอุปกรณ์รองรับทุกเครื่องมือ มีให้เลือกเล่นหลายเกมส์ เล่นได้ทั่วโลกเพราะนี้คือเกมส์ออนไลน์แบบใหม่ เกมยิงปลา

อีกทั้งเรายังให้บริการ เกมสล็อต ยิงปลา แทงบอลออนไลน์ รองรับทุกการใช้งานในอุปกรณ์ต่าง ๆ HTML5 คอมพิวเตอร์ แท็บเล็ต สมาทโฟน คาสิโนออนไลน์ และมือถือทุกรุ่น เล่นได้ตลอด 24ชม. ไม่ต้อง Downloads เกมส์ให้ยุ่งยาก ด้วยระบบที่เสถียรที่สุดในประเทศไทย

Its always nice and i feel honored reading your Blog . Your Blogs always based on all basic concepts which anyone can understand so easily and relate to Pleasure to read your Blogs Sir.



golden retriever puppies for sale near me
dachshund puppies for sale near me
golden retriever puppies for sale in pa
Germany Medical said…
I am looking for this informative post thanks for share it. We have an online store of liposuction Instruments. We are offering worldwide free shipping on every order.
General Suction Cannulas
Cannulas & Injectors
Cell Friendly Injectors
Harvesting Cannulas
Specialty Cannulas
senthilr7692 said…
Blog has informative contents and thanks for sharing this.
Python Classes in Chennai
Best Python Training in Bangalore

We are very thankful for share this informative post. Buy real leather jackets, Motogp Leather Suits & Motogp Leather Jackets with worldwide free shipping.
Motogp Leather Suits
Motogp Leather Jacket
Sheepskin Jackets
Shearling Jacket
Maradona Jons said…
Probably the most genuine football betting UFABET that's over and above description Find fun, excitement and excitement with slot video games, hundred no cost acknowledgement, fast withdrawal. In case you would like to relax slots for cash No need to deposit a lot, without minimum, without need to talk about, squander time simply because UFABET is really reduced, paid heavily, a number of good promotions are waiting for you. Ready to assure enjoyable, no matter if it is Joker SlotXo fruit slot, we can telephone call it an internet slot internet site for you especially. Able to relax Like the support team which is going to facilitate slot formulas as well as strategies of actively playing So you can be sure that every moment of fun and pleasure We'll be there for you to provide the customers of yours the best appearance and also total satisfaction.
บาคาร่า
สล็อต
ufa
แทงบอล

Praveenrahul said…
Such a useful blog with needed information and thanks for sharing this amazing blog.
AWS Certification in Chennai
DevOps Course in Chennai
buy weed online and save money to buy even more legit online dispensary ship all 50 states thanks you for this article buy weed online in addition, buy weed online legit
UFABET1688 said…
Pretty section of content. I just stumbled upon your website and in accession capital to assert that I acquire in fact enjoyed account your blog posts. Any way I will be subscribing to your augment and even I achievement you access consistently fast. ยูฟ่าสล็อต
AUTHENTICDICS said…
LEGIT DISPENSARY SHIPPING TOP DISCRETE WhatsApp: +14154846196(https://420budmall.com/)
Are you depressed, suffering from cancer, glaucoma,
headache, insomnia, joint pains, multiple sclerosis, muscle cramps, nausea,
etc, and need the best strains of medical marijuana to help ease your pain ?? You have reached the perfect destination with quality herbs that guarantee a good and healthy life.
Buy weed online, Dispensary weed, Buy marijuana online, Order weed online, weed for sale, when you buy from 420budmall dispensary we do top discreet shipping and delivery to your address. Buy medical Marijuana Online. Buy thc products online, buy carts online. Buy wax shatter edibles, live resin, cbd oil etc
Buy weed online cheap, Buy cannabis products online, Buy marijuana online weed shop, marijuana buds the flower is usually consumed by smoking or vaporizing you can buy marijuana flowers in pounds from our weed store @ 420budmall.com. We have exotic weed strains like the Runtz strain, Biscotti, LA pack boys, and many orders. Skunk weed for sale Buying weed online cheap has never been this easy with the help of 420budmall.com Weed shop, You can purchase marijuana flower buds Today. The marijuana industry has always revolved around deals, even when it was only in the black market realm. Marijuana for sale online cheap, Get the strongest marijuana products on sale at 420budmall.com marijuana online shopping for less, the highest quantity weed for the least money with the high level of competition in the cannabis market.
Our marijuana dispensary is mainly focused to serve the world with the best quality marijuana and expand even further with new states starting medical and recreational programs as we will in no doubt create opportunities for everyone to be able to purchase weed online. Legit Online weed shop worldwide delivery - Marijuana for sale online cheap - Buy real kush online cheap -Purchase real weed online UK - Order real marijuana online Canada - Marijuana for sale - Marijuana dispensary shipping worldwide - Buy weed Online cheap - Legit weed dispensary shop in the USA, cheap weed online shop. Skunk weed for sale Mail order weed online UK Marijuana Dispensary USA deliveries, we deliver Mail Order marijuana products across UK, Ireland, EU, and worldwide. We offer a marijuana discreet shipping USA without being discovered. UK Mail Order Marijuana.
Buy Weed Online USA and Enjoy our vast selection of craft cannabis flowers, edibles, and concentrates from the comfort of your own home! Our goal is to provide our clients with the most secure, reliable, and safe experience when you buy weed online cheap or mail order weed online with the fastest deliveries, Skunk weed for sale Skunk weed for sale also known as AAA weed, buy skunk weed online today and have it delivered at your doorstep. top-shelf exotic weed for. Buy real weed from 420budmall.com if you want to buy some weed or how to order weed, how to order weed online, AAA weed for sale online, kali weed, Skunk weed UK, buy hash online USA, how to get free, buy AAA weed or the best quality, UK Cali, UK Cali, cannabis UK, Cali apparel UK, buy green crack online, are there girl scout cookies in England, Cali UK, is weed legal in England, buy cannabis edibles UK, is weed legal in Scotland, Buy Cannabis Products Online, buy sour diesel online, tko carts, death star og, is cheap weed ca legit cookies carts, death star og, 420 bud
WhatsApp: +14154846193
Email: Watsonmuld@gmail.com
Website: https://420budmall.com/
Telegram Channel: https://t.me/joinchat/tr3QkdGPjM5hZTQx
3A-MOTO said…
B3 Bomber Jacket For Sale - Free Shipping and Best Deal
Men consistently partial to skins and hides due to the fact the start of timethey utilized it to insure by themselves and safeguard them by your cold temperatures.
Now shearling coats, Real Leather Bomber Jackets, Buy Harley Davidson Leather Motorcycle Jackets holds probably the best legacy , masculinity along with ruggedness to get a guys outer wear.

Popular posts from this blog

Using jstat to report custom JVM metric sets

Spring integration testing with Spock