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配置相关推荐
- spring mvc mysql配置_spring mvc配置数据库连接
ACM 配置中心实战:Spring + MyBatis + Druid + ACM 很多基于 Spring MVC 框架的 Web 开发中,Spring + MyBatis + Druid 是一个黄金 ...
- jdbctemplate mysql 配置_Spring JDBCTemplate配置使用
一.开发环境 Windows 10 IntelliJ IDEA 2016.1 旗舰版 JDK1.8 二.项目和数据库结构 项目结构: 数据库(MySQL 5.5.39): /* Navicat MyS ...
- spring java配置_Spring:使基于Java的配置更加优雅
spring java配置 大家好,我很久没有写新文章了. 积累了很多资料,需要在不久的将来在我的博客中发布. 但是现在我想谈谈Spring MVC应用程序配置. 确切地说,我想谈谈基于Java的Sp ...
- Spring Boot 整合 Quartz 实现 Java 定时任务的动态配置
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 首先说下这次主题,动态配置.没接触过定时任务的同学可以先看 ...
- java+++多数据源配置,Spring Cloud + Mybatis 多数据源配置
项目开发中遇到缺陷,使用多数据源能避免分库间数据同步的步骤,在此记录配置步骤. 一.数据源自动配置禁用 1.将spring boot自带的DataSourceAutoConfiguration禁掉,防 ...
- Java Spring Data Redis实战与配置参数详解 application.properties...
Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...
- spring boot框架学习学前掌握之重要注解(2)-通过java的配置方式进行配置spring
本节主要内容: 1:通过代码演示实现零XML配置spring 2:使用重点注解理解 声明: 本文是<凯哥陪你学系列-框架学习之spring boot框架学习>中spring boot框架学 ...
- 零配置 之Spring基于Java类定义Bean配置元数据
转载自 [第十二章]零配置 之 12.4 基于Java类定义Bean配置元数据 --跟我学spring3 12.4 基于Java类定义Bean配置元数据 12.4.1 概述 基于Java类定义B ...
- Spring:使基于Java的配置更加优雅
大家好,我很久没有写新文章了. 积累了很多资料,需要在不久的将来在我的博客中发布. 但是现在我想谈谈Spring MVC应用程序配置. 确切地说,我想谈谈基于Java的Spring配置. 尽管在3.0 ...
最新文章
- 【转】关于 SELECT /*!40001 SQL_NO_CACHE */ * FROM 的解惑
- PHP之mb_internal_encoding使用
- 开放搜索查询分析服务架构解读
- spring boot + vue + element-ui全栈开发入门
- java读取csv合适文件_解析-您可以推荐一个Java库来读取(并可能写入)CSV文件吗?...
- python itemgetter函数用法_Python中的sorted函数以及operator.itemgetter函数
- JavaScript中数组去重汇总
- php preg_split,php汉字截取函数_preg_split()
- 拓端tecdat|新能源车主数据图鉴
- 【数据结构】KMP算法分析与理解(图文分析)
- 金额转换,阿拉伯数字的金额转换成中国传统的形式
- 应用程序错误(0xc0000135)
- linux dsi接口,RPi 树莓派 DSI 接口研究 MIPI raspberry pi
- 使用地图编辑器构建游戏场景
- winxp下用ssh控制 linux 服务器
- 如何利用自己的数据制作社交地图?只显示可视区域内的标注
- python绘制彩色六边雪花
- 区块链如何改变供应链金融
- 运行 RoCEv2 的网络注意事项
- 高通QSPR读写NV
热门文章
- Java 非阻塞 IO 和异步 IO
- 《四世同堂》金句摘抄(十一)
- 《白鹿原》金句摘抄(六)
- mybatis简单案例源码详细【注释全面】——前期准备
- 2019蓝桥杯省赛---java---C---9(等差数列)
- mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)
- linux虚拟机tomcat上部署web项目的常用命令
- jakarta ee_Jakarta EE的拟议命名空间
- findfirst_当心findFirst()和findAny()
- hibernate性能_改善Hibernate应用程序性能的7种方法