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:
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:
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:
If you like to see wider context please follow examples in my GitHub repo: https://github.com/jkubrynski/spring-java-config-samples/
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
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.
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..
@Override
protected String[] getServletMappings() {
return new String[]{"/*"};
}
to
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
to make form logins work. So without the "*"
No mapping found for HTTP request with URI [/helloworld.jsp] in DispatcherServlet with name 'dispatcherServlet'
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.
simply and clever. I like it.
Java Training in Bangalore
Java Course in Bangalore
Java Training in Madurai
Java Course in Madurai
Java Training in Coimbatore
Java Classes in Coimbatore
Oracle DBA Training in Chennai
Oracle DBA Course in Chennai
Excel Training in Chennai
Oracle Training in Chennai
Spark Training in Chennai
Tableau Training in Chennai
Embedded System Course Chennai
Oracle DBA Training in Chennai
Oracle DBA Training in OMR
Spring Training in Chennai
Spring framework Training in Chennai
Spring Training in Velachery
Hibernate Training in Chennai
Spring and Hibernate Training in Chennai
soft skills training in chennai
core java training in chennai
Spring Training in Chennai
Aviation Courses in Chennai
air hostess course in Chennai
Airport Management Training in Chennai
airport ground staff training courses in Chennai
Aviation Academy in Chennai
air hostess training in Chennai
airport management courses in Chennai
ground staff training in Chennai
ecommerce website development company in chennai
Hibernate Training in Chennai
Hibernate course in Chennai
Hibernate Training institute in Chennai
hibernate training in T nagar
hibernate training in Guindy
Spring Training in Chennai
clinical sas training in chennai
DOT NET Training in Chennai
QTP Training in Chennai
LoadRunner Training in Chennai
Selenium Training in Chennai
Selenium Training
selenium testing course in chennai
Best selenium Training Institute in Chennai
Selenium training in vadapalani
Selenium training in porur
Python Training in Chennai
Hadoop Training in Chennai
Big data training in chennai
JAVA Training in Chennai
QTP Training in Chennai
Qtp classes in chennai
qtp training institutes in chennai
qtp training in Thiruvanmiyur
QTP Training in OMR
LoadRunner Training in Chennai
Html5 Training in Chennai
clinical sas training in chennai
Spring Training in Chennai
Photoshop Classes in Chennai
website builder for reseller
private label website builder
white label website builder
Hibernate Training in Chennai
Spring Hibernate Training in Chennai
Spring and Hibernate Training in Chennai
hibernate training in anna nagar
hibernate training in vadapalani
Spring Training in Chennai
clinical sas training in chennai
DOT NET Training in Chennai
QTP Training in Chennai
LoadRunner Training in Chennai
Hadoop Training in Chennai
Big data training in chennai
Big Data Training
bigdata and hadoop training in chennai
Hadoop Training in Velachery
Big data training in Adyar
Python Training in Chennai
Software testing training in chennai
JAVA Training in Chennai
Selenium Training in Chennai
Html5 Training in Chennai
Html5 Courses in Chennai
Html5 Training Institutes in Chennai
Html5 Training in OMR
Html5 Training in Porur
DOT NET Training in Chennai
core java training in chennai
Hibernate Training in Chennai
Mobile Testing Training in Chennai
SAS Training in Chennai
Android Training in Chennai
app development course in chennai
Android Training Institute in Chennai
Android training
Android Training in Velachery
Android training in Adyar
Python Training in Chennai
Software testing training in chennai
JAVA Training in Chennai
Software Testing Training in Chennai
software testing course in chennai
testing courses in chennai
software testing training institute in chennai
Software testing training in Thiruvanmiyur
Software testing training in Velachery
Python Training in Chennai
Digital marketing course in chennai
Python Training in Chennai
JAVA Training in Chennai
Top 5 Data science training in chennai
Data science training in chennai
Data science training in velachery
Data science training in OMR
Best Data science training in chennai
Data science training course content
Data science certification in chennai
Data science courses in chennai
Data science training institute in chennai
Data science online course
Data science with python training in chennai
Data science with R training in chennai
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
AngularJS Training in Chennai
Angular 4 Training in Chennai
Angular 5 Training in Chennai
Angular Training in Chennai
ReactJS Training in Chennai
PHP course in Chennai
Web Designing Training in Chennai
AngularJS Training in Anna Nagar
AngularJS Training in Vadapalani
AngularJS Training in Velachery
airtel recharge list
Really nice post. Thank you for sharing amazing information.
Python training in Chennai/Python training in OMR/Python training in Velachery/Python certification training in Chennai/Python training fees in Chennai/Python training with placement in Chennai/Python training in Chennai with Placement/Python course in Chennai/Python Certification course in Chennai/Python online training in Chennai/Python training in Chennai Quora/Best Python Training in Chennai/Best Python training in OMR/Best Python training in Velachery/Best Python course in Chennai
Corporate TRaining Spring Framework
Project Centers in Chennai For CSE
Spring Training in Chennai
please add more in future.
TOEFL Coaching in Chennai
TOEFL Center in Chennai
Data Analytics Courses in Chennai
IELTS Coaching centre in Chennai
Japanese Language Classes in Chennai
Best Spoken English Classes in Chennai
content writing training in chennai
spanish language classes in chennai
TOEFL Coaching in Tnagar
TOEFL Coaching in OMR
website development Pakistan
Pouch Manufacturers
fertilizer bag manufacturers
Lyrics with music
ppc company in gurgaon
website designing company in Gurgaon
PPC company in Noida
seo company in gurgaon
PPC company in Mumbai
PPC company in Chandigarh
Digital Marketing Company
Washing Machine Repair In Faridabad
LG Washing Machine Repair In Faridabad
Bosch Washing Machine Repair In Faridabad
Whirlpool Washing Machine Repair In Faridabad
Samsung Washing Machine Repair In Faridabad
Washing Machine Repair in Noida
godrej washing machine repair in noida
whirlpool Washing Machine Repair in Noida
IFB washing Machine Repair in Noida
LG Washing Machine Repair in Noida
iso certification in delhi
ce certification in delhi
iso 14001 certification in delhi
iso 22000 certification cost
iso consultants in noida
iso 27001 certification in delhi
ISO 9001 Certification in Noida
iso 22000 certification in Delhi
digital marketing agency in chennai
plant nursery in chennai
beauty Shop in Chennai
Digital Marketing training Course in Chennai
digital marketing training institute in Chennai
digital marketing training in Chennai
digital marketing course in Chennai
digital marketing course training in omr
digital marketing certification in omr
digital marketing course training in velachery
digital marketing training center in Chennai
digital marketing courses with placement in Chennai
digital marketing certification in Chennai
digital marketing institute in Chennai
digital marketing certification course in Chennai
digital marketing course training in Chennai
Digital Marketing course in Chennai with placement
digital marketing courses in Chennai
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
digital marketing training in bangalore | https://www.excelr.com/digital-marketing-training-in-bangalore
spoken english classes in bangalore
Spoken English Classes in Chennai
spoken english class in coimbatore
spoken english class in madurai
Spoken English Classes in BTM
Spoken English Classes in Marathahalli
Spoken English Classes near Marathahalli
Spoken English Marathahalli
DevOps Training in Bangalore
DOT NET Training in Bangalore
Salesforce Training in Chennai
salesforce training in bangalore
Salesforce Course in bangalore
best salesforce training in bangalore
salesforce institute in bangalore
salesforce developer training in bangalore
Big Data Course in Coimbatore
Python Training in Bangalore
salesforce training in marathahalli
salesforce institutes in marathahalli
IELTS Coaching in Chennai
IELTS coaching in bangalore
IELTS coaching centre in coimbatore
IELTS coaching in madurai
IELTS Coaching in Hyderabad
Best ielts coaching in bangalore
ielts training in bangalore
ielts coaching centre in bangalore
ielts classes in bangalore
ethical hacking course in bangalore
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
PHP Training in Bangalore
PHP Training in Chennai
PHP Course in Bangalore
PHP Training Institute in Bangalore
PHP Classes in Bangalore
AWS Training in Bangalore
Data Science Courses in Bangalore
DevOps Training in Bangalore
DOT NET Training in Bangalore
Data Science Course in Chennai
Really awesome blog. Your blog is really useful for me. Thanks for sharing this informative blog.
Software Testing Training in Chennai
Software Testing Training in Bangalore
Software Testing Course in Coimbatore
Software Testing Training in Madurai
Software Testing Training Institute in Bangalore
Software Testing Course in Bangalore
Testing Course in Bangalore
Ethical hacking course in bangalore
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
Digital Marketing Course In Kolkata
Web Design Course In Kolkata
Oflox Is The Best Website Designing Company In Dehradun
Best Data Science training in Mumbai
Data Science training in Mumbai
python training in coimbatore
java course in coimbatore
java training in coimbatore
android course in coimbatore
android training in coimbatore
php course in coimbatore
php training in coimbatore
digital marketing course in coimbatore
digital marketing training in coimbatore
software testing course in coimbatore
software testing training in coimbatore
Courses in Digital Marketing in Pune
java course in coimbatore
python training in coimbatore
java training in coimbatore
php course in coimbatore
php training in coimbatore
android course in coimbatore
android training in coimbatore
datascience course in coimbatore
datascience training in coimbatore
ethical hacking course in coimbatore
ethical hacking training in coimbatore
artificial intelligence course in coimbatore
artificial intelligence training in coimbatore
digital marketing course in coimbatore
digital marketing training in coimbatore
embedded system course in coimbatore
embeddedsystem training in coimbatore
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
Forum.app
Jobs
Jedox
Data Science Training in Hyderabad
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
Digital Marketing Training Course in Chennai | Digital Marketing Training Course in Anna Nagar | Digital Marketing Training Course in OMR | Digital Marketing Training Course in Porur | Digital Marketing Training Course in Tambaram | Digital Marketing Training Course in Velachery
SAP training in Kolkata
SAP training Kolkata
Best SAP training in Kolkata
SAP course in Kolkata
SAP training institute Kolkata
Good To Share Information With Us Thanks For Sharing
Hadoop Training in Hyderabad
Hadoop Course in Hyderabad
python training in coimbatore
java course in coimbatore
java training in coimbatore
android course in coimbatore
android training in coimbatore
php course in coimbatore
php training in coimbatore
digital marketing course in coimbatore
digital marketing training in coimbatore
software testing course in coimbatore
software testing training in coimbatore
German Classes in Chennai | Certification | Online Course Training | GRE Coaching Classes in Chennai | Certification | Online Course Training | TOEFL Coaching in Chennai | Certification | Online Course Training | Spoken English Classes in Chennai | Certification | Online Course Training
Hadoop Training in Hyderabad
Hadoop Course Training Institute in Hyderabad
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.
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
python training in bangalore | python online trainng
artificial intelligence training in bangalore | artificial intelligence online training
uipath training in bangalore | uipath online training
blockchain training in bangalore | blockchain online training
Best Degree College In Hyderabad
Best Degree College In Attapur
me.
Data Science-Alteryx Training Course in Coimbatore | Online Data Science Course in Coimbatore | Data Science Training in Coimbatore | Best Data Science Training Institute | Data Science Course in Coimbatore Online Data Science Training in Coimbatore | Data Science with python Training Course in Coimbatore | Data Science Traning in saravanampatti
GMAT online preparation
GMAT training in hyderabad
CAT Coaching in hyderabad
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
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
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
SAP training in Kolkata
SAP training Kolkata
Best SAP training in Kolkata
SAP course in Kolkata
Ansys cadd center in coimbatore
Ansys course in coimbatore
Ansys course fees in coimbatore
Ansys course training in coimbatore
Best Ansys course in coimbatore
Ansys course training with placement in coimbatore
Ansys online training course in coimbatore
Ansys online course in coimbatore
Ansys fees structure in coimbatore
Ansys jobs in coimbatore
Ansys training in coimbatore
Cadd centre in coimbatore
Cadd course in coimbatore
Cadd centre fees structure in coimbatore
Best data science training course in coimbatore | Best data science training in coimbatore | Data science training with placement in coimbatore | Data science online certification in coimbatore | Datascience online course in coimbatore | Data science training fees in Qtree Technologies coimbatore | Data science training coimbatore Quora | Datascience online class in coimbatore | Data science course in coimbatore | Data science training centre in coimbatore | Data science with Python Training course in coimbatore | Datascience training and placement in coimbatore
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
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
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 .
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 .
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Artificial Intelligence Course
best way to prepare for ielts
how to score good marks in ielts
how to become an ethical hacker
how do you work under pressure
learn java for selenium
ethical hacking interview questions and answers
current version of php
digital marketing tricks
big data examples in real life
community cloud salesforce
android developer interview questions
tally training in chennai
hadoop training in chennai
sap training in chennai
oracle training in chennai
angular js training in chennai
https://joinpaknavy.site/
420 mail order marijuana online
legit online dispensary shipping worldwide
buy khalifa kush online
buy cocaine online
buy weed online
buy weed online
buy weed online
buy alprazolam online