您的位置:首页 > 编程语言 > Java开发

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 bean