spring纯注解+libreoffice
spring.version为4.3.10.RELEASE
aspectjweaver.version为1.8.10
libreoffice.version为5.2.0(juh、jurt、ridl、unoil四个相关jar包)
libreoffice核心包jodconverter-core为3.2-xwiki-SNAPSHOT
一、相关配置类 AppConfiguration
@Configuration //相当于beans.xml
@ComponentScan({"com.jingluu.converter.doc"}) //相当于 <context:component-scan base-package="com.jingluu.converter.doc"/>
@PropertySource({"classpath:converter.properties"}) //相当于 <context:property-placeholder location="classPath:converter.properties" />
二、web初始化加载 AppWebInitializer implements WebApplicationInitializer
@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {//注解配置web.xml上下文AnnotationConfigWebApplicationContext rootAppContext = new AnnotationConfigWebApplicationContext();//注册配置类/** 相当于加载beans.xml* <context-param>* <param-name>contextConfigLocation</param-name>* <param-value>classpath:spring/applicationContext.xml</param-value>* </context-param>*/rootAppContext.register(AppConfiguration.class); //设置ServletContext/** servlet上下文,相当于web.xml*/rootAppContext.setServletContext(servletContext);//添加监听器/** 相当于添加一个上下文监听* <listener>* <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>* </listener>*/ContextLoaderListener contextLoaderListener = new ContextLoaderListener(rootAppContext);/** 将配置的一个监听的机制存放到web.xml中*/servletContext.addListener(contextLoaderListener);}
三、ConverterProperties (获取我们在配置文件中内容)
@Component
public class ConverterProperties {@Value("${converter.office.home}")private String officeHome;@Value("${converter.office.ports}")private String officePorts;public String getOfficeHome() {return officeHome;}public String getOfficePorts() {return officePorts;}}
四、DocConverter 和 DocConverterImpl
public interface DocConverter {/*** 文本转换* @param from 初始文件路径* @param to 传出文件路径*/void converter(String from,String to);/*** 文本转换* @param from * @param to*/void converter(File from,File to);}
/*** office文档转换实现类* @author kif**/
@Component
public class DocConverterImpl implements DocConverter{@Autowiredprivate ConverterProperties converterProperties;//文件管理private OfficeManager officeManager;//文件转换private OfficeDocumentConverter offDocConverter;/*** @PostConstruct 声明该方法在构造函数执行完之后被调用,且仅调用一次* 相当于<init-method></init-method>*/@PostConstructpublic void start(){//配置DefaultOfficeManagerConfiguration cfg = new DefaultOfficeManagerConfiguration();//指定OpenOffice或LibreOffice安装的根目录cfg.setOfficeHome(converterProperties.getOfficeHome());//LibreOffice处理进程的端口,多个用逗号隔开(如果设置了多个端口,将会启动多个处理进程)String portsNumbers = converterProperties.getOfficePorts();if(portsNumbers != null && !"".equals(portsNumbers.trim())){String[] ports = portsNumbers.split(",");int[] portList = new int[ports.length];for(int i=0;i<ports.length;i++){portList[i] = Integer.valueOf(ports[i]);}cfg.setPortNumbers(portList);}//officeManagerofficeManager = cfg.buildOfficeManager();//OfficeDocumentConverter文档转换器offDocConverter = new OfficeDocumentConverter(officeManager);System.out.println("Converter initialized ...");//启动文档转换器进程officeManager.start();System.out.println("converter start ...");}/*** 进行转换*/public void converter(String from, String to) {this.converter(new File(from), new File(to));}@Overridepublic void converter(File from, File to) {offDocConverter.convert(from, to);}/*** 终止处理进程* @PreDestroy 声明该方法在Bean销毁前被调用,仅调用一次*/@PreDestroypublic void stop(){officeManager.stop();System.out.println("converter stop ...");}}
转载于:https://www.cnblogs.com/kongkongFabian/p/7497273.html
spring纯注解+libreoffice相关推荐
- 【Java从0到架构师】Spring - 纯注解开发
纯注解开发 纯注解开发 - AOP 纯注解开发 - 整合 MyBatis 纯注解开发 - 事务管理 JSR 注解 JSR 注解 - @Resource.@Inject JSR 注解 - @PostCo ...
- Spring 纯注解定时任务
@Component @EnableScheduling public class TimingAddSigndata { @Resource SigndataService signdataServ ...
- 纯注解开发配置spring
1.纯注解开发[定义配置类的注解] ==@Confituration == 表示该类是一个配置类 ==@ComponentScan("com.itheima") == 配置包扫描 ...
- spring框架三种类型项目实现--基础maven类型、纯注解开发型、aop结合注解开发型
spring框架实现 1.基础maven类型 1.开发准备--pom.xml添加spring依赖 2.创建properties文件 还是三层架构开发 3.domain层创建实体类javabean 4. ...
- SSM3==理解静态代理、动态代理Proxy.newProxyInstance、cglib代理==通过纯XML配置spring AOP,通过纯注解配置spring AOP
静态代理: 为什么要代理?在不改动原代码的基础上,丰富调用某个方法时实现的功能. 比如service类中原本update只会更新,但是通过代理类加上了判断权限和输出时间的功能. 其实这些功能也可以写在 ...
- SSM4==通过XML配置spring 事务,通过纯注解配置spring 事务
mysql的事务管理,是指在有关系的表(比如有外键)之间实现ACID,比如表A的金额列的外键是表B的金额列,那么如果A的金额减了300,B的金额也要减少300.如果A减300成功了,B失败了,mysq ...
- SSM6==spring体系回顾,纯XML配置springMVC,纯注解配置springMVC
spring全家桶 spring framework 官方文档: Spring Framework Reference Documentationhttps://docs.spring.io/spri ...
- SSM纯注解后台代码整合(Spring+SpringMvc+Mybatis)
SSM后台整合(Spring+SpringMvc+Mybtis+事务+Rest风格+统一结果封装+统一异常处理+拦截器) 文章目录 1 基础环境搭建 1.1 建表 1.2 创建web项目 1.3 导入 ...
- 整合mybatis——使用纯注解整合、使用Mapper+Mapper.xml整合、使用mybatis.cfg.xml整合
引入druid <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-b ...
- spring基于注解的IOC以及IoC的案例——概念
1.spring中ioc的常用注解 2.案例使用xml方式和注解方式实现单表的CRUD操作 持久层技术选择:dbutils 3.改造基于注解的ioc案例,使用纯注解的方式实现 spri ...
最新文章
- 公共基因表达数据分析系统genevestigator,再也不愁表达数据的查询和比较了
- Office 365管理员指引 17——Sharepoint 讨论版
- convex function
- java的两种运行方式Applet和Application你真的懂吗
- 概要设计说明书案例_逆向前行,趁势而为外贸学院线上教学优秀案例展(七)...
- Android官方命令深入分析之Hierarchy Viewer
- 大型网站架构演化(二)——应用服务和数据服务分离
- HashMap, LinkedHashMap 和 TreeMap的区别
- tensorflow的keras 与 原生keras几点比较
- 在JSP中应用JavaBean
- 产品需求文档、需求结构图、数据字典、全局说明、用例描述、需求描述、逻辑流程、原型设计、页面交互、登录注册、词汇表、数据统计、用户表设计、接口需求、功能清单、业务流程图、Axure原型、prd、文档实例
- 单线程reactor
- struts2.0+spring intercepter 不能注入属性
- 关于ASP.NET给产品分类,分页,详情页生成静态页面
- 移动端登录后,携带token请求其他页面接口提示token验证失败
- php网站登录界面验证码打不开,php网站无法显示验证码
- mac 字体微软雅黑字体_在Microsoft Word 2007中搜索和替换特定格式(字体,样式等)...
- 湖南省中职计算机应用教资笔试+面试心得
- 解决开启VMware虚拟机后宿主机出现插U盘没反应的问题
- VC6link卡死解决办法
热门文章
- [Java]一则自定义的XStream转换器,主要用于POJO XML反序列化为Map/List
- sql 语句中where条件和jion on条件的区别
- python训练手势分类器_从Scikit Learn中保存的训练分类器进行预测
- 人脸识别 face_recognition
- 从多态性谈动态联编的必要性(c++)
- 实现一个文本文件的解析类(vector,字符串解析的应用)
- win32汇编 多线程编程与事件
- OpenSSL密码库算法笔记——第3.2章 模乘与模平方
- SAS Planet软件使用教程及下载Googlemap地图
- 如何编译Android的kernel,如何下载并编译Android 4.0内核源码Goldfish(图文)