spring mvc 从bean中自动获取对象
2017-11-11 21:40
363 查看
写在前面
在日常开发或者学习spring mvc web项目中,当项目打包部署后,某些自定义配置项参数可能会需要改动。而这些配置项参数如果被写死进项目中,或许会造成很大的麻烦。因此,有时候这些需要变动的自定义的配置项参数,便需要写进配置文件中。spring mvc 中有一个bean对象的概念,具体含义以及原理,各位猿友可自行脑补。今天小编就向大家介绍一种从配置文件中自动装配bean对象池中对象的知识点。
项目需求
图片上传,上传图片在服务器中上传路径的配置。spring-mvc.xml 文件bean的配置
<!--上传文件配置--> <bean id="uploadConfig" class="com.qingyu.blog.util.UploadConfigFactoryBean"> <property name="uploadPath" value="D:\image" /> <property name="thumbDir" value="thumbs" /> <property name="thumb" value="0.3" /> <property name="imageFormat" value=".jpg"/> </bean>
UploadConfigFactoryBean.java
package com.qingyu.blog.util; import org.springframework.beans.factory.FactoryBean; /** * @author longping jie * @name UploadConfig * @description the class is used to 上传文件的配置 * @date 2017/11/10 */ public class UploadConfigFactoryBean implements FactoryBean<UploadResolver> { //默认上传位置 private String uploadPath; //保存缩略图的文件夹名 private String thumbDir; //默认缩略比例 private double thumb; //默认统一保存格式 private String imageFormat; public String getUploadPath() { return uploadPath; } public void setUploadPath(String uploadPath) { this.uploadPath = uploadPath; } public String getThumbDir() { return thumbDir; } public void setThumbDir(String thumbDir) { this.thumbDir = thumbDir; } public double getThumb() { return thumb; } public void setThumb(double thumb) { this.thumb = thumb; } public String getImageFormat() { return imageFormat; } public void setImageFormat(String imageFormat) { this.imageFormat = imageFormat; } @Override public UploadResolver getObject() throws Exception { UploadResolver r = new UploadResolver(); r.uploadConfig = this; return r; } @Override public Class<?> getObjectType() { return UploadResolver.class; } @Override public boolean isSingleton() { return false; } }
UploadResolver .java
package com.qingyu.blog.util; import net.coobird.thumbnailator.Thumbnails; import org.springframework.web.multipart.MultipartFile; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.time.LocalDate; import java.util.UUID; /** * @author longping jie * @name UploadResolver * @description the class is used to 上传图片的工具类 * @date 2017/11/10 */ public class UploadResolver { UploadConfigFactoryBean uploadConfig; String dateName; public UploadResolver() { LocalDate dt = LocalDate.now(); int year = dt.getYear(); int month = dt.getMonthValue(); int date = dt.getDayOfMonth(); String monthStr = month + ""; String dateStr = date + ""; if (month < 10) { monthStr = "0" + monthStr; } if (date < 10) { dateStr = "0" + date; } dateName = String.format("%s-%s-%s", year, monthStr, dateStr); } /** * 按比例缩小图片 * * @param image 需要上传的图片 * @return */ public String saveThumbImage(MultipartFile image) { String imageName = createImageName(); S 4000 tring thumbName = createThumbImageName(); File imageFile = new File(imageName); File thumbFile = new File(thumbName); if (!imageFile.getParentFile().exists()) { imageFile.getParentFile().mkdirs(); thumbFile.getParentFile().mkdirs(); } try { image.transferTo(imageFile); Thumbnails.of(imageFile).scale(0.3f).toFile(thumbFile);//按比例缩小 } catch (IOException e) { e.printStackTrace(); } return thumbName; } /** * 裁剪图片 * * @param image 需要上传的图片对象 * @param args 图片裁剪参数 * @return */ public String saveThumbImage(MultipartFile image, CutImageArgs args) { String imageUrl = ""; String imageName = createImageName(); String thumbName = createThumbImageName(); File imageFile = new File(imageName); File thumbFile = new File(thumbName); if (!imageFile.getParentFile().exists()) { imageFile.getParentFile().mkdirs(); thumbFile.getParentFile().mkdirs(); } try { image.transferTo(imageFile); BufferedImage buf = Thumbnails.of(imageFile).width(args.getPresentWidth()).height(args.getPresentHeight()) .asBufferedImage(); Thumbnails.of(buf).sourceRegion(args.getX(), args.getY(), args.getW(), args.getH()) .size(args.getNeed_w(), args.getNeed_h()).toFile(thumbFile); imageUrl = thumbName; } catch (IOException e) { e.printStackTrace(); } return imageUrl; } /** * 创建一个源图片上传的路径名 * * @return */ private String createImageName() { String fileName = createUUIDName(); String imageName = String.format("%s%s%s%s%s%s", uploadConfig.getUploadPath(), File.separator, dateName, File.separator, fileName, uploadConfig.getImageFormat()); return imageName; } /** * 创建一个压缩图片上传的路径名 * * @return */ private String createThumbImageName() { String fileName = createUUIDName(); String thumbName = String.format("%s%s%s%s%s%s%s%s", uploadConfig.getUploadPath(), File.separator, dateName, File.separator, uploadConfig.getThumbDir(), File.separator, fileName, uploadConfig.getImageFormat()); return thumbName; } /** * 用uuid重命名文件 * * @return 文件新的名字 */ private String createUUIDName() { return UUID.randomUUID().toString().replaceAll("-", ""); } }
@Controller @RequestMapping("/user") public class UserController implements BeanFactoryAware { private Logger logger = LogManager.getLogger(UserController.class); @Autowired UserLoginService userLoginService; @Autowired SystemService systemService; @Autowired UploadResolver uploadResolver; .....中间代码省略 BeanFactory beanFactory; @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; }
相关文章推荐
- Spring MVC 在JSP中获取service层的Bean对象
- JavaWeb项目获取Spring自动装配的Bean对象
- Spring MVC 在JSP中获取service层的Bean对象
- 关于Spring Mvc定时任务中无法获取Bean容器中的对象
- Servlet中获取spring bean的管理对象
- jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后 //获取焦点后光标在字符串后 //其原理就是获得焦点后重新把自己复制粘帖一下 var t=$("#"+id).val()
- Java POJO Bean 对象与 Web Form 表单的自动装配
- Spring MVC 3 表单提交时,自动将各输入字段封装成实体Bean
- spring不通过注入的方式获取对象(BeanFactoryAware \ApplicationContextAware )
- 自动扫描Controller 获取请求对象 生成wiki接口文档
- 第36天(就业班) spring引入、专业术语、spring六大模块、bean创建对象的细节、IOC容器、对象依赖关系、自动装配、注解方式
- 【Spring】手动获取spring容器对象时,报no qualifying bean of type is defined
- Spring 获取Bean对象
- Spring mvc 下Ajax获取JSON对象问题 406错误
- Spring 根据Bean注册的名称获取Bean对象
- Spring3.1.0实现原理分析(八).获取bean对象
- 手动获取spring的ApplicationContext和bean对象
- spring mvc 接收json参数不能自动转换对象
- 详解Spring MVC自动为对象注入枚举类型
- spring mvc 多个bean,或一个bean多个对象的数据绑定