发表于: 2016-05-07 21:57:58
1 2084
【操作步骤】
1.实现仅通过修改配置文件就能切换云存储服务的功能。
【知识总结】
1.刚开始我一直以为,如果想使用xml文件配置服务,那么服务的Util类中的方法和属性都必须是static的,当然,我把方法和属性全部设置成static的也可以实现功能,但是如果设置为static后,就不能使用多态和继承了。
其实,想使用xml文件配置服务,服务的Util类不用把方法和属性设置成static,普通的就可以,这样就可以使用多态了。
【出现的问题(已解决)】
1.目的:我想实现“只通过修改xml配置文件就能够切换云存储服务”这个功能。
思路:刚开始我想到了继承和多态。
做法:(1)建立一个父类OSSUtil类,里面有一个静态方法UploadFile(String key, File file)。(其实刚开始我是想建立一个接口的,让接口里面只有一个方法名,不要方法体的,但是接口里面不能有static修饰词,所以我就建立了一个类)
(2)为两个云存储服务(阿里云和七牛云)分别建立两个工具类AliyunOSSUtil和QiniuOSSUtil,这两个类都继承了OSSUtil类,并且都实现了OSSUtil类中的UploadFile方法。
(3)为两个云存储服务分别配置xml文件,在配置文件中把这两个bean的id都设置为“OSSUtil”。
(4)当需要在Controller类中调用云存储服务时,就使用 ((OSSUtil)ContextLoaderListener.getCurrentWebApplicationContext().getBean("OSSUtil")).UploadFile("favicon", file)这个方法来实现上传文件功能。在这个方法中,getBean("OSSUtil")可以获得配置文件中配置的类的一个实例,返回一个Object,前面的(OSSUtil)是为了对Object进行强制转换。
问题:我感觉我这样是可以的,但是当我把从配置文件中获取到的Bean强制转换为OSSUtil后,调用UploadFile方法调的是OSSUtil的方法,而不是子类的方法,我感觉可能是静态方法的缘故。
解决:就是静态方法的缘故,子类不能重写父类的静态方法。所以我这个思路就是错误的。
【出现的问题(未解决)】
1.未实现的功能
1.1 邮箱和短信的防攻击
1.2 云存储防盗链、缩略图
1.3 数据迁移
【疑问】
评论