php建站程序,常州发布信息的有什么网站,网站前台显示数据库指定分类怎么做php,网站建设标书样本spring java配置我发现许多我认识的Spring开发人员仍然不了解或使用Spring Java Configuration#xff08;aka JavaConfig#xff09;。 Spring 3.0引入了此功能#xff0c;该功能使Spring可以完全用Java进行配置-不再需要XML#xff01; 我真的很喜欢使用JavaConfig#… spring java配置 我发现许多我认识的Spring开发人员仍然不了解或使用Spring Java Configurationaka 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配置 beansbean idPersonService classcom.codetutr.PersonServiceconstructor-arg refpersonDao //beanbean idpersonDao classcom.codetutr.dao.PersonDaoproperty nameendpoint valuelocalhost //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 ContextSpring提供了一个新的ApplicationContext实现 AnnotationConfigApplicationContext 。 它的用法与使用ClassPathXmlApplicationContext用法相同 ApplicationContext ctx new AnnotationConfigApplicationContext(AppConfig.class);
PersonService personService ctx.getBean(PersonService.class); 或者如果您在Web应用程序中 servletservlet-namemyServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextClass/param-nameparam-valueorg.springframework.web.context.support.AnnotationConfigWebApplicationContext/param-value/init-paraminit-paramparam-namecontextConfigLocation/param-nameparam-valuecom.codetutr.config.AppConfig/param-value/init-paramload-on-startup1/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应用程序 。 参考 CodeTutr博客上来自我们JCG合作伙伴 Steve Hanson的Spring Java Configuration 。 翻译自: https://www.javacodegeeks.com/2013/04/spring-java-configuration.htmlspring java配置