最近在搞web应用配置分离,将项目有关的配置分离到项目外面,然后通过路径读取该配置文件。发布到服务器上其实容易实现,因为linux文件的路径直接在web应用中输入就行了。但是之前我需要现在windows本地部署测试,也就是说需要将配置文件放到windows目录下面。
先看我代码中读取配置文件的地方。
public static final String APPLICATION_FILE_PATH =F:/WorkSpace/pufa/couple/appconfig/application.properties";
public static final String INTERFACEPARAM_FILE_PATH = "F:/WorkSpace/pufa/couple/appconfig/application.properties";
注意linux的路径符号和Window的路径符号是不同的,windows系统中文件路径用的是反斜杠“\”,而linux或unix系统中文件路径用的正斜杠即”/“。
但是java代码中路径直接写“\”的话,会报错。因为第一个斜杠会当做转意字符处理了,所以得用“\\”双斜杠代替,但是实际测试发现,当使用linux的路径分隔符号‘/’也是能成功的,java识别到对应的路径。所以在java中写windows路径一般用"/"或将"\"转义一下,就成了"\\"。
然后是spring和log4j的配置文件。
log的配置文件:
这边直接用window的路径就行了,注意仍然用的反斜杠“/”。
然后是spring的路径配置:
注意spring路径配置,需要在前面加上file:,然后其它路径配置和上面是一样的。
但是我在配置文件中尝试用“\”替换掉"/"也是能够顺利部署成功的。
综上所述,在本地Winds部署中,如果在java代码中配置路径的话,只能用“/”
或者使用“\\”,其它配置文件"/"或者"\"都可以。
最近在搞web应用配置分离,将项目有关的配置分离到项目外面,然后通过路径读取该配置文件。发布到服务器上其实容易实现,因为linux文件的路径直接在web应用中输入就行了。但是之前我需要现在windows本地部署测试,也就是说需要将配置文件放到windows目录下面。先看我代码中读取配置文件的地方。public static final String APPLICATION_FILE_PATH =F...
3.7.1. 用BeanPostProcessor定制bean
3.7.1.1. 使用BeanPostProcessor的Hello World示例
3.7.1.2. RequiredAnnotationBeanPostProcessor示例
3.7.2. 用BeanFactoryPostProcessor定制
配置
元数据
3.7.2.1. PropertyPlaceholderConfigurer示例
3.7.2.2. PropertyOverrideConfigurer示例
3.7.3. 使用FactoryBean定制实例化逻辑
3.8. ApplicationContext
3.8.1. 利用MessageSource实现国际化
3.8.2. 事件
3.8.3. 底层资源的访问
3.8.4. ApplicationContext在WEB应用中的实例化
3.9. 粘合代码和可怕的singleton
3.9.1. 使用Singleton-helper类
4. 资源
4.1. 简介
4.2. Resource 接口
4.3. 内置 Resource 实现
4.3.1. UrlResource
4.3.2. ClassPathResource
4.3.3. FileSystemResource
4.3.4. ServletContextResource
4.3.5. InputStreamResource
4.3.6. ByteArrayResource
4.4. ResourceLoader
4.5. ResourceLoaderAware 接口
4.6. 把Resource作为属性来
配置
4.7. Application context 和Resource
路径
4.7.1. 构造application context
4.7.1.1. 创建 ClassPathXmlApplicationContext 实例 - 简介
4.7.2. Application context构造器中资源
路径
的通配符
4.7.2.1. Ant风格的pattern
4.7.2.2. classpath*: 前缀
4.7.2.3. 其他关于通配符的说明
4.7.3. FileSystemResource 提示
5. 校验,数据绑定,BeanWrapper,与属性编辑器
5.1. 简介
5.2. 使用Spring的Validator接口进行校验
5.3. 从错误代码到错误信息
5.4. Bean处理和BeanWrapper
5.4.1. 设置和
获取
属性值以及嵌套属性
5.4.2. 内建的PropertyEditor实现
5.4.2.1. 注册用户自定义的PropertyEditor
6. 使用Spring进行面向切面编程(AOP)
6.1. 简介
6.1.1. AOP概念
6.1.2. Spring AOP的功能和目标
6.1.3. Spring的AOP代理
6.2. @AspectJ支持
6.2.1. 启用@AspectJ支持
6.2.2. 声明一个切面
6.2.3. 声明一个切入点(pointcut)
6.2.3.1. 切入点指定者的支持
6.2.3.2. 合并切入点表达式
6.2.3.3. 共享常见的切入点(pointcut)定义
6.2.3.4. 示例
6.2.4. 声明通知
6.2.4.1. 前置通知(Before advice)
6.2.4.2. 返回后通知(After returning advice)
6.2.4.3. 抛出后通知(After throwing advice)
6.2.4.4. 后通知(After (finally) advice)
6.2.4.5. 环绕通知(Around Advice)
6.2.4.6. 通知参数(Advice parameters)
6.2.4.7. 通知(Advice)顺序
6.2.5. 引入(Introductions)
6.2.6. 切面实例化模型
6.2.7. 例子
6.3. Schema-based AOP support
6.3.1. 声明一个切面
6.3.2. 声明一个切入点
6.3.3. 声明通知
6.3.3.1. 通知(Advice)
6.3.3.2. 返回后通知(After returning advice)
6.3.3.3. 抛出异常后通知(After throwing advice)
6.3.3.4. 后通知(After (finally) advice)
6.3.3.5. 通知
6.3.3.6. 通知参数
6.3.3.7. 通知顺序
6.3.4. 引入
6.3.5. 切面实例化模型
6.3.6. Advisors
6.3.7. 例子
6.4. AOP声明风格的选择
6.4.1. Spring AOP还是完全用AspectJ?
6.4.2. Spring AOP中使用@AspectJ还是XML?
6.5. 混合切面类型
6.6. 代理机制
6.7. 编程方式创建@AspectJ代理
6.8. 在Spring应用中使用AspectJ
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入
6.8.1.1. @Configurable object的单元测试
6.8.1.2. 多application context情况下的处理
6.8.2. Spring中其他的AspectJ切面
6.8.3. 使用Spring IoC来
配置
AspectJ的切面
6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW)
6.9. 其它资源
7. Spring AOP APIs
7.1. 简介
7.2. Spring中的切入点API
7.2.1. 概念
7.2.2. 切入点实施
7.2.3. AspectJ切入点表达式
7.2.4. 便利的切入点实现
7.2.4.1. 静态切入点
7.2.4.2. 动态切入点
7.2.5. 切入点的基类
7.2.6. 自定义切入点
7.3. Spring的通知API
7.3.1. 通知的生命周期
7.3.2. Spring里的通知类型
7.3.2.1. 拦截around通知
7.3.2.2. 前置通知
7.3.2.3. 异常通知
7.3.2.4. 后置通知
7.3.2.5. 引入通知
7.4. Spring里的advisor(Advisor) API
7.5. 使用ProxyFactoryBean创建AOP代理
7.5.1. 基础
7.5.2.
Java
Bean属性
7.5.3. 基于JDK和CGLIB的代理
7.5.4. 对接口进行代理
7.5.5. 对类进行代理
7.5.6. 使用“全局”advisor
7.6. 简化代理定义
7.7. 使用ProxyFactory通过编程创建AOP代理
7.8. 操作被通知对象
7.9. 使用“自动代理(autoproxy)”功能
7.9.1. 自动代理bean定义
7.9.1.1. BeanNameAutoProxyCreator
7.9.1.2. DefaultAdvisorAutoProxyCreator
7.9.1.3. AbstractAdvisorAutoProxyCreator
7.9.2. 使用元数据驱动的自动代理
7.10. 使用TargetSources
7.10.1. 热交换目标源
7.10.2. 池化目标源
7.10.3. 原型目标源
7.10.4. ThreadLocal目标源
7.11. 定义新的通知类型
7.12. 更多资源
8. 测试
8.1. 简介
8.2. 单元测试
8.3. 集成测试
8.3.1. Context管理和缓存
8.3.2. 测试fixture的依赖注入
8.3.3. 事务管理
8.3.4. 方便的变量
8.3.5. 示例
8.3.6. 运行集成测试
8.4. 更多资源
II. 中间层数据访问
9. 事务管理
9.1. 简介
9.2. 动机
9.3. 关键抽象
9.4. 使用资源同步的事务
9.4.1. 高层次方案
9.4.2. 低层次方案
9.4.3. TransactionAwareDataSourceProxy
9.5. 声明式事务管理
9.5.1. 理解Spring的声明式事务管理实现
9.5.2. 第一个例子
9.5.3. 回滚
9.5.4. 为不同的bean
配置
不同的事务语义
9.5.5. <tx:advice/> 有关的设置
9.5.6. 使用 @Transactional
9.5.6.1. @Transactional 有关的设置
9.5.7. 插入事务操作
9.5.8. 结合AspectJ使用 @Transactional
9.6. 编程式事务管理
9.6.1. 使用 TransactionTemplate
9.6.2. 使用 PlatformTransactionManager
9.7. 选择编程式事务管理还是声明式事务管理
9.8. 与特定应用服务器集成
9.8.1. BEA WebLogic
9.8.2. IBM WebSphere
9.9. 公共问题的解决方案
9.9.1. 对一个特定的 DataSource 使用错误的事务管理器
9.10. 更多的资源
10. DAO支持
10.1. 简介
10.2. 一致的异常层次
10.3. 一致的DAO支持抽象类
11. 使用JDBC进行数据访问
11.1. 简介
11.1.1. Spring JDBC包结构
11.2. 利用JDBC核心类实现JDBC的基本操作和错误处理
11.2.1. JdbcTemplate类
11.2.2. NamedParameterJdbcTemplate类
11.2.3. SimpleJdbcTemplate类
11.2.4. DataSource接口
11.2.5. SQLExceptionTranslator接口
11.2.6. 执行SQL语句
11.2.7. 执行查询
11.2.8. 更新数据库
11.3. 控制数据库连接
11.3.1. DataSourceUtils类
11.3.2. SmartDataSource接口
11.3.3. AbstractDataSource类
11.3.4. SingleConnectionDataSource类
11.3.5. DriverManagerDataSource类
11.3.6. TransactionAwareDataSourceProxy类
11.3.7. DataSourceTransactionManager类
11.4. 用
Java
对象来表达JDBC操作
11.4.1. SqlQuery类
11.4.2. MappingSqlQuery类
11.4.3. SqlUpdate类
11.4.4. StoredProcedure类
11.4.5. SqlFunction类
12. 使用ORM工具进行数据访问
12.1. 简介
12.2. Hibernate
12.2.1. 资源管理
12.2.2. 在Spring的application context中创建 SessionFactory
12.2.3. HibernateTemplate
12.2.4. 不使用回调的基于Spring的DAO实现
12.2.5. 基于Hibernate3的原生API实现DAO
12.2.6. 编程式的事务划分
12.2.7. 声明式的事务划分
12.2.8. 事务管理策略
12.2.9. 容器资源 vs 本地资源
12.2.10. 在应用服务器中使用Hibernate的注意点
12.3. JDO
12.3.1. 建立PersistenceManagerFactory
12.3.2. JdoTemplate和JdoDaoSupport
12.3.3. 基于原生的JDO API实现DAO
12.3.4. 事务管理
12.3.5. JdoDialect
12.4. Oracle TopLink
12.4.1. SessionFactory 抽象层
12.4.2. TopLinkTemplate 和 TopLinkDaoSupport
12.4.3. 基于原生的TopLink API的DAO实现
12.4.4. 事务管理
12.5. iBATIS SQL Maps
12.5.1. iBATIS 1.x和2.x的概览与区别
12.5.2. iBATIS SQL Maps 1.x
12.5.2.1. 创建SqlMap
12.5.2.2. 使用 SqlMapTemplate 和 SqlMapDaoSupport
12.5.3. iBATIS SQL Maps 2.x
12.5.3.1. 创建SqlMapClient
12.5.3.2. 使用 SqlMapClientTemplate 和 SqlMapClientDaoSupport
12.5.3.3. 基于原生的iBATIS API的DAO实现
12.6. JPA
12.6.1. 在Spring环境中建立JPA
12.6.1.1. LocalEntityManagerFactoryBean
12.6.1.2. LocalContainerEntityManagerFactoryBean
12.6.1.3. 处理多个持久化单元
12.6.2. JpaTemplate 和 JpaDaoSupport
12.6.3. 基于原生的JPA实现DAO
12.6.4. 异常转化
12.6.5. 事务管理
12.6.6. JpaDialect
III. Web
13. Web框架
13.1. 介绍
13.1.1. 与其他web框架的集成
13.1.2. Spring Web MVC框架的特点
13.2. DispatcherServlet
13.3. 控制器
13.3.1. AbstractController 和 WebContentGenerator
13.3.2. 其它的简单控制器
13.3.3. MultiActionController
13.3.4. 命令控制器
13.4. 处理器映射(handler mapping)
13.4.1. BeanNameUrlHandlerMapping
13.4.2. SimpleUrlHandlerMapping
13.4.3. 拦截器(HandlerInterceptor)
13.5. 视图与视图解析
13.5.1. 视图解析器
13.5.2. 视图解析链
13.5.3. 重定向(Rediret)到另一个视图
13.5.3.1. RedirectView
13.5.3.2. redirect:前缀
13.5.3.3. forward:前缀
13.6. 本地化解析器
13.6.1. AcceptHeaderLocaleResolver
13.6.2. CookieLocaleResolver
13.6.3. SessionLocaleResolver
13.6.4. LocaleChangeInterceptor
13.7. 使用主题
13.7.1. 简介
13.7.2. 如何定义主题
13.7.3. 主题解析器
13.8. Spring对分段
文件
上传(multipart file upload)的支持
13.8.1. 介绍
13.8.2. 使用MultipartResolver
13.8.3. 在表单中处理分段
文件
上传
13.9. 使用Spring的表单标签库
13.9.1.
配置
标签库
13.9.2. form标签
13.9.3. input标签
13.9.4. checkbox标签
13.9.5. radiobutton标签
13.9.6. password标签
13.9.7. select标签
13.9.8. option标签
13.9.9. options标签
13.9.10. textarea标签
13.9.11. hidden标签
13.9.12. errors标签
13.10. 处理异常
13.11. 惯例优先原则(convention over configuration)
13.11.1. 对控制器的支持: ControllerClassNameHandlerMapping
13.11.2. 对模型的支持:ModelMap (ModelAndView)
13.11.3. 对视图的支持: RequestToViewNameTranslator
13.12. 其它资源
14. 集成视图技术
14.1. 简介
14.2. JSP和JSTL
14.2.1. 视图解析器
14.2.2. 'Plain-old' JSPs versus JSTL 'Plain-old' JSP与JSTL
14.2.3. 帮助简化开发的额外的标签
14.3. Tiles
14.3.1. 需要的资源
14.3.2. 如何集成Tiles
14.3.2.1. InternalResourceViewResolver
14.3.2.2. ResourceBundleViewResolver
14.4. Velocity和FreeMarker
14.4.1. 需要的资源
14.4.2. Context
配置
14.4.3. 创建模板
14.4.4. 高级
配置
14.4.4.1. velocity.properties
14.4.4.2. FreeMarker
14.4.5. 绑定支持和表单处理
14.4.5.1. 用于绑定的宏
14.4.5.2. 简单绑定
14.4.5.3. 表单输入生成宏
14.4.5.4. 重载HTML转码行为并使你的标签符合XHTML
14.5. XSLT
14.5.1. 写在段首
14.5.1.1. Bean 定义
14.5.1.2. 标准MVC控制器代码
14.5.1.3. 把模型数据转化为XML
14.5.1.4. 定义视图属性
14.5.1.5. 文档转换
14.5.2. 小结
14.6. 文档视图(PDF/Excel)
14.6.1. 简介
14.6.2.
配置
和安装
14.6.2.1. 文档视图定义
14.6.2.2. Controller 代码
14.6.2.3. Excel视图子类
14.6.2.4. PDF视图子类
14.7. JasperReports
14.7.1. 依赖的资源
14.7.2.
配置
14.7.2.1.
配置
ViewResolver
14.7.2.2.
配置
View
14.7.2.3. 关于报表
文件
14.7.2.4. 使用 JasperReportsMultiFormatView
14.7.3. 构造ModelAndView
14.7.4. 使用子报表
14.7.4.1.
配置
子报表
文件
14.7.4.2.
配置
子报表数据源
14.7.5.
配置
Exporter的参数
15. 集成其它Web框架
15.1. 简介
15.2. 通用
配置
15.3.
Java
Server Faces
15.3.1. DelegatingVariableResolver
15.3.2. FacesContextUtils
15.4. Struts
15.4.1. ContextLoaderPlugin
15.4.1.1. DelegatingRequestProcessor
15.4.1.2. DelegatingActionProxy
15.4.2. ActionSupport 类
15.5. Tapestry
15.5.1. 注入 Spring 托管的 beans
15.5.1.1. 将 Spring Beans 注入到 Tapestry 页面中
15.5.1.2. 组件定义
文件
15.5.1.3. 添加抽象访问方法
15.5.1.4. 将 Spring Beans 注入到 Tapestry 页面中 - Tapestry 4.0+ 风格
15.6. WebWork
15.7. 更多资源
16. Portlet MVC框架
16.1. 介绍
16.1.1. 控制器 - MVC中的C
16.1.2. 视图 - MVC中的V
16.1.3. Web作用范围的Bean
16.2. DispatcherPortlet
16.3. ViewRendererServlet
16.4. 控制器
16.4.1. AbstractController和PortletContentGenerator
16.4.2. 其它简单的控制器
16.4.3. Command控制器
16.4.4. PortletWrappingController
16.5. 处理器映射
16.5.1. PortletModeHandlerMapping
16.5.2. ParameterHandlerMapping
16.5.3. PortletModeParameterHandlerMapping
16.5.4. 增加 HandlerInterceptor
16.5.5. HandlerInterceptorAdapter
16.5.6. ParameterMappingInterceptor
16.6. 视图和它们的解析
16.7. Multipart
文件
上传支持
16.7.1. 使用PortletMultipartResolver
16.7.2. 处理表单里的
文件
上传
16.8. 异常处理
16.9. Portlet应用的部署
IV. 整合
17. 使用Spring进行远程访问与Web服务
17.1. 简介
17.2. 使用RMI暴露服务
17.2.1. 使用 RmiServiceExporter 暴露服务
17.2.2. 在客户端链接服务
17.3. 使用Hessian或者Burlap通过HTTP远程调用服务
17.3.1. 为Hessian
配置
DispatcherServlet
17.3.2. 使用HessianServiceExporter暴露你的bean
17.3.3. 客户端连接服务
17.3.4. 使用Burlap
17.3.5. 对通过Hessian或Burlap暴露的服务使用HTTP基础认证
17.4. 使用HTTP调用器暴露服务
17.4.1. 暴露服务对象
17.4.2. 在客户端连接服务
17.5. Web服务
17.5.1. 使用JAXI-RPC暴露服务
17.5.2. 访问Web服务
17.5.3. 注册bean映射
17.5.4. 注册自己的处理方法
17.5.5. 使用XFire来暴露Web服务
17.6. 对远程接口不提供自动探测
17.7. 在选择这些技术时的一些考虑
18. Enterprise
Java
Bean(EJB)集成
18.1. 简介
18.2. 访问EJB
18.2.1. 概念
18.2.2. 访问本地的无状态Session Bean(SLSB)
18.2.3. 访问远程SLSB
18.3. 使用Spring提供的辅助类实现EJB组件
19. JMS
19.1. 简介
19.2. 使用Spring JMS
19.2.1. JmsTemplate
19.2.2. 连接工厂
19.2.3. (消息)目的地管理
19.2.4. 消息侦听容器
19.2.4.1. SimpleMessageListenerContainer
19.2.4.2. DefaultMessageListenerContainer
19.2.4.3. ServerSessionMessageListenerContainer
19.2.5. 事务管理
19.3. 发送一条消息
19.3.1. 使用消息转换器
19.3.2. SessionCallback 和ProducerCallback
19.4. 接收消息
19.4.1. 同步接收
19.4.2. 异步接收 - 消息驱动的POJOs
19.4.3. SessionAwareMessageListener 接口
19.4.4. MessageListenerAdapter
19.4.5. 事务中的多方参与
20. JMX
20.1. 介绍
20.2. 输出bean到JMX
20.2.1. 创建一个MBeanServer
20.2.2. 复用现有的MBeanServer
20.2.3. MBean的惰性初始化
20.2.4. MBean的自动注册
20.2.5. 控制注册行为
20.3. 控制bean的管理接口
20.3.1. MBeanInfoAssembler 接口
20.3.2. 使用源码级元数据
20.3.3. 使用JDK 5.0注解
20.3.4. 源代码级的元数据类型
20.3.5. 接口AutodetectCapableMBeanInfoAssembler
20.3.6. 用
Java
接口定义管理接口
20.3.7. 使用MethodNameBasedMBeanInfoAssembler
20.4. 控制bean的 ObjectName
20.4.1. 从Properties中
读取
ObjectName
20.4.2. 使用 MetadataNamingStrategy
20.5. JSR-160连接器
20.5.1. 服务器端连接器
20.5.2. 客户端连接器
20.5.3. 基于Burlap/Hessian/SOAP的JMX
20.6. 通过代理访问MBeans
20.7. 通知
20.7.1. 为通知注册监听器
20.7.2. 发布通知
20.8. 更多资源
21. JCA CCI
21.1. 介绍
21.2.
配置
CCI
21.2.1. 连接器
配置
21.2.2. 在Spring中
配置
ConnectionFactory
21.2.3.
配置
CCI连接
21.2.4. 使用一个 CCI 单连接
21.3. 使用Spring的 CCI访问支持
21.3.1. 记录转换
21.3.2. CciTemplate 类
21.3.3. DAO支持
21.3.4. 自动输出记录生成
21.3.5. 总结
21.3.6. 直接使用一个 CCI Connection 接口和Interaction接口
21.3.7. CciTemplate 使用示例
21.4. 建模CCI访问为操作对象
21.4.1. MappingRecordOperation
21.4.2. MappingCommAreaOperation
21.4.3. 自动输出记录生成
21.4.4. 总结
21.4.5. MappingRecordOperation 使用示例
21.4.6. MappingCommAreaOperation 使用示例
21.5. 事务
22. Spring邮件抽象层
22.1. 简介
22.2. Spring邮件抽象结构
22.3. 使用Spring邮件抽象
22.3.1. 可插拔的MailSender实现
22.4. 使用
Java
Mail MimeMessageHelper
22.4.1. 创建一条简单的MimeMessage,并且发送出去
22.4.2. 发送附件和嵌入式资源(inline resources)
23. Spring中的定时调度(Scheduling)和线程池(Thread Pooling)
23.1. 简介
23.2. 使用OpenSymphony Quartz 调度器
23.2.1. 使用JobDetailBean
23.2.2. 使用 MethodInvokingJobDetailFactoryBean
23.2.3. 使用triggers和SchedulerFactoryBean来包装任务
23.3. 使用JDK Timer支持类
23.3.1. 创建定制的timers
23.3.2. 使用 MethodInvokingTimerTaskFactoryBean类
23.3.3. 打包:使用TimerFactoryBean来设置任务
23.4. SpringTaskExecutor抽象
23.4.1. TaskExecutor接口
23.4.2. 何时使用TaskExecutor接口
23.4.3. TaskExecutor类型
23.4.4. 使用TaskExecutor接口
24. 动态语言支持
24.1. 介绍
24.2. 第一个例子
24.3. 定义动态语言支持的bean
24.3.1. 公共概念
24.3.1.1. <lang:language/> 元素
24.3.1.2. Refreshable bean
24.3.1.3. 内置动态语言源
文件
24.3.1.4. 理解dynamic-language-backed bean context的构造器注入
24.3.2. JRuby beans
24.3.3. Groovy beans
24.3.4. BeanShell beans
24.4. 场景
24.4.1. Spring MVC控制器脚本化
24.4.2. Validator脚本化
24.5. 更多的资源
25. 注解和源代码级的元数据支持
25.1. 简介
25.2. Spring的元数据支持
25.3. 注解
25.3.1. @Required
25.3.2. Spring中的其它@Annotations
25.4. 集成Jakarta Commons Attributes
25.5. 元数据和Spring AOP自动代理
25.5.1. 基本原理
25.5.2. 声明式事务管理
25.5.3. 缓冲
25.5.4. 自定义元数据
25.6. 使用属性来减少MVC web层
配置
25.7. 元数据属性的其它用法
25.8. 增加对额外元数据API的支持
A. XML Schema-based configuration
A.1. Introduction
A.2. XML Schema-based configuration
A.2.1. Referencing the schemas
A.2.2. The util schema
A.2.2.1. <util:constant/>
A.2.2.2. <util:property-path/>
A.2.2.3. <util:properties/>
A.2.2.4. <util:list/>
A.2.2.5. <util:map/>
A.2.2.6. <util:set/>
A.2.3. The jee schema
A.2.3.1. <jee:jndi-lookup/> (simple)
A.2.3.2. <jee:jndi-lookup/> (with single JNDI environment setting)
A.2.3.3. <jee:jndi-lookup/> (with multiple JNDI environment settings)
A.2.3.4. <jee:jndi-lookup/> (complex)
A.2.3.5. <jee:local-slsb/> (simple)
A.2.3.6. <jee:local-slsb/> (complex)
A.2.3.7. <jee:remote-slsb/>
A.2.4. The lang schema
A.2.5. The tx (transaction) schema
A.2.6. The aop schema
A.2.7. The tool schema
A.2.8. The beans schema
A.3. Setting up your IDE
A.3.1. Setting up Eclipse
A.3.2. Setting up IntelliJ IDEA
A.3.3. Integration issues
A.3.3.1. XML parsing errors in the Resin v.3 application server
B. Extensible XML authoring
B.1. Introduction
B.2. Authoring the schema
B.3. Coding a NamespaceHandler
B.4. Coding a BeanDefinitionParser
B.5. Registering the handler and the schema
B.5.1. META-INF/spring.handlers
B.5.2. META-INF/spring.schemas
C. spring-beans-2.0.dtd
D. spring.tld
D.1. Introduction
D.2. The bind tag
D.3. The escapeBody tag
D.4. The hasBindErrors tag
D.5. The htmlEscape tag
D.6. The message tag
D.7. The nestedPath tag
D.8. The theme tag
D.9. The transform tag
E. spring-form.tld
E.1. Introduction
E.2. The checkbox tag
E.3. The errors tag
E.4. The form tag
E.5. The hidden tag
E.6. The input tag
E.7. The label tag
E.8. The option tag
E.9. The options tag
E.10. The password tag
E.11. The radiobutton tag
E.12. The select tag
E.13. The textarea tag
F. Spring 2.0 开发手册中文化项目
F.1. 声明
F.2. 致谢
F.3. 参与人员及任务分配
F.4. Spring 2.0 正式版开发手册翻译说明
F.5. 项目历程
F.5.1. Spring 2.0 RC2 开发手册翻译项目
F.5.2. Spring 2.0 正式版开发手册翻译项目
之前写过一篇博客,表述了
windows
与linux下
路径
区别,见:
Python学习笔记(17)-
windows
和linux下的
路径
与
文件
具体点就是:"C:\\a.txt"//
windows
写法
"/mnt/a.txt"//linux写法二,跨平台的
路径
写法
Java
是跨平台的语言,
路径
写法也提供了跨平台的写法,使用File.separator即可。如下示例,使用se
要让Spring Boot
读取
相对
路径
下的
文件
,我们可以使用Resource类提供的方法进行操作。
首先,我们需要在Spring Boot的
配置
文件
(比如application.properties或application.yml)中
配置
文件
路径
。我们可以设置一个属性,比如"file.path",并指定
文件
的相对
路径
。例如,如果我们想
读取
相对于项目根目录下的一个名为"data.txt"的
文件
,我们可以在
配置
文件
中添加以下内容:
file.path=data.txt
接下来,在我们的代码中,我们可以使用ResourceLoader类来
获取
这个
文件
。
首先,我们需要在我们的类中注入一个ResourceLoader对象:
@Autowired
private ResourceLoader resourceLoader;
然后,我们可以使用resourceLoader的getResource方法来
获取
文件
的URL:
String filePath = "classpath:" + file.path;
Resource resource = resourceLoader.getResource(filePath);
URL url = resource.getURL();
最后,我们可以使用url对象来
读取
文件
的内容。例如,我们可以使用Files类来
读取
文本
文件
的内容:
Path path = Paths.get(url.toURI());
List<String> lines = Files.readAllLines(path);
现在,我们就可以通过lines变量来访问
文件
的内容了。
总结起来,如果想要Spring Boot
读取
相对
路径
下的
文件
,我们只需要在
配置
文件
中指定
文件
的相对
路径
,并使用ResourceLoader来
获取
文件
的URL,在代码中
读取
文件
的内容即可。
### 回答2:
在Spring Boot中,我们可以使用`ResourceLoader`类来
读取
相对
路径
下的
文件
。
首先,我们需要注入`ResourceLoader`对象:
```
java
@Autowired
private ResourceLoader resourceLoader;
然后,可以使用`resourceLoader.getResource()`方法
获取
文件
的`Resource`对象。我们可以使用`classpath:`前缀来指定相对于classpath的相对
路径
,或者使用`file:`前缀来指定相对于
文件
系统的
路径
。
```
java
Resource resource = resourceLoader.getResource("classpath:example.txt");
接下来,我们可以通过`resource.getInputStream()`方法
获取
文件
的输入流,从而
读取
文件
的内容。
```
java
try (InputStream inputStream = resource.getInputStream()) {
//
读取
文件
内容
另外,如果我们想指定
文件
的绝对
路径
,可以使用`file:`前缀:
```
java
Resource resource = resourceLoader.getResource("file:/path/to/file/example.txt");
需要注意的是,尽管Spring Boot的classpath默认是`classpath:`,但是我们仍然可以使用相对于classpath的表达式,例如:
```
java
Resource resource = resourceLoader.getResource("classpath:/files/example.txt");
总之,使用`ResourceLoader`对象和相应的前缀,我们可以方便地
读取
Spring Boot应用程序中相对
路径
下的
文件
。
### 回答3:
在Spring Boot中,可以使用ResourceLoader来
读取
相对
路径
下的
文件
。
首先需要注入一个ResourceLoader对象到你的代码中,你可以通过@Autowired或者构造函数等方式来实现注入。
例如,你可以在一个Service类中注入一个ResourceLoader对象:
```
java
@Service
public class MyService {
@Autowired
private ResourceLoader resourceLoader;
// ...
然后,你可以使用ResourceLoader的getResource方法来
获取
相对
路径
下的
文件
,该方法需要传入一个相对
路径
字符串作为参数。
例如,假设你有一个名为"data.txt"的
文件
在相对
路径
"/resources"下,你可以通过如下代码
获取
该
文件
的Resource对象:
```
java
Resource resource = resourceLoader.getResource("classpath:data.txt");
其中,"classpath:"是用来指示
文件
位于classpath下的前缀。如果
文件
不位于classpath下,你可以使用其他适当的前缀,例如"file:"来指示
文件
位于
文件
系统下的绝对
路径
。
接下来,你可以使用Resource对象提供的方法来
读取
该
文件
的内容,例如使用getInputStream方法来
获取
文件
的输入流,然后使用IO流操作来
读取
文件
内容。
例如,你可以通过如下代码来
读取
文件
内容并输出:
```
java
try (InputStream inputStream = resource.getInputStream()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
} catch (IOException e) {
// 处理异常
这样,你就可以使用Spring Boot来
读取
相对
路径
下的
文件
了。