spring java配置_Spring Java配置
spring java配置
 我發現許多我認識的Spring開發人員仍然不了解或使用Spring Java Configuration(aka JavaConfig)。 Spring 3.0引入了此功能,該功能使Spring可以完全用Java進行配置-不再需要XML! 我真的很喜歡使用JavaConfig,因為,好吧,它是Java! 這意味著它具有Java類型安全和IDE支持的所有優點: 
- 打字錯誤生成編譯錯誤–無需等待加載時間即可找到XML錯字
 - IDE重構工具將自動更新JavaConfig,因為它是常規Java
 - 可以使用IDE自動導入功能來代替在XML中鍵入完全限定的類名
 - IDE向下鉆取功能
 - IDE自動完成功能
 - 我想您明白了,它與Java兼容。
 
上面的某些功能確實內置在具有Spring支持的更高級的IDE中,但是最好不要依賴自定義IDE Spring支持來獲得這些功能。 對我而言,編譯時檢查是一項重大工作。 我經常重構代碼,更改字段名或移動或重命名Java文件經常會破壞XML Spring配置。 當然,在部署應用程序并收到Spring初始化錯誤之前,我通常不會意識到這一點。 現在,當我重構代碼時,IDE會自動更新JavaConfig引用,因為它只是普通的Java。 另外,如果我忘記使用IDE的重構工具,那么JavaConfig中仍然會出現編譯錯誤,該錯誤會在部署前提醒我出現問題。
讓我展示一個有關XML配置如何轉換為JavaConfig的基本示例。 首先,XML配置:
<beans><bean id="PersonService" class="com.codetutr.PersonService"><constructor-arg ref="personDao" /></bean><bean id="personDao" class="com.codetutr.dao.PersonDao"><property name="endpoint" value="localhost" /></bean> </beans>轉換為JavaConfig:
package com.codetutr.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.codetutr.dao.PersonDao; import com.codetutr.service.PersonService;@Configuration public class AppConfig {@Beanpublic PersonService personService() {return new PersonService(personDao());}@Beanpublic PersonDao personDao() {PersonDao personDao = new PersonDao();personDao.setEndpoint("localhost");return personDao;}}這是一個非常簡單的一對一轉換。 每個<beans>文檔都轉換為帶有@Configuration注釋的Java類。 每個<bean>元素都轉換為帶有@Bean注釋的單個方法。 方法的名稱與bean ID相對應。 要在JavaConfig中引用另一個bean,只需調用所需bean的方法(請參見上面的personService )。
我對Spring JavaConfig的另一種觀察是,使用構造函數注入而不是setter注入更為自然-因為它導致一種單行方法。 對我來說這是一個優點,因為我通常更喜歡構造函數注入。 如果一個類需要某些依賴項才能正常運行,我更喜歡在構造函數中要求它們。 這樣,我可以確保將類初始化為有效狀態。 我注意到,無論出于何種原因,構造器注入似乎在XML配置中很少使用。 也許constructor-arg太難記了? 我不知道,但是我喜歡JavaConfig似乎可以帶回一些東西。
現在,為了引導JavaConfig Application Context,Spring提供了一個新的ApplicationContext實現: AnnotationConfigApplicationContext 。 它的用法與使用ClassPathXmlApplicationContext用法相同:
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); PersonService personService = ctx.getBean(PersonService.class);或者,如果您在Web應用程序中:
<servlet><servlet-name>myServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextClass</param-name><param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value></init-param><init-param><param-name>contextConfigLocation</param-name><param-value>com.codetutr.config.AppConfig</param-value></init-param><load-on-startup>1</load-on-startup> </servlet>請注意,可以為上面的contextConfigLocation參數傳遞程序包名稱或類名稱。
或者最后,如果您使用的是Servlet 3的Java配置:
public class SpringWebAppInitializer implements WebApplicationInitializer {@Overridepublic void onStartup(final ServletContext servletContext) throws ServletException {final AnnotationConfigWebApplicationContext springContext = new AnnotationConfigWebApplicationContext();springContext.register(AppConfig.class);final ServletRegistration.Dynamic springServlet = servletContext.addServlet("myServlet", new DispatcherServlet(springContext));springServlet.setLoadOnStartup(1);springServlet.addMapping("/*");} } 這篇文章只是刮擦了JavaConfig的表面。 我將繼續發布有關如何從其他@Configuration類或XML文件導入bean以及如何使用自定義名稱空間的文章。 另外,請查看我的文章有關如何使用JavaConfig設置Spring-MVC應用程序 。 
翻譯自: https://www.javacodegeeks.com/2013/04/spring-java-configuration.html
spring java配置
總結
以上是生活随笔為你收集整理的spring java配置_Spring Java配置的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 剑三糖葫芦喊话设置(剑三糖葫芦怎么用)
 - 下一篇: 游戏云电脑豪华破解版(下载云电脑破解版)