spring IOC初始化对象

发布于 2021-11-02 03:31:35 字数 2848 浏览 835 评论 11

spring 生成的对象的时候默认调用我写的一个方法怎么不行呢

我的XML配制如下:

<!--图片处理-->
<bean id="imageScale" class="com.cms.common.image.ImageScaleImpl" init-method="init">
<property name="tryMagick" value="true"/>
</bean>

那个类代码如下:

package com.cms.common.image;

import java.awt.Color;
import java.io.File;

import magick.Magick;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ImageScaleImpl implements ImageScale {

private static final Logger log = LoggerFactory

.getLogger(ImageScaleImpl.class);

 

public void resizeFix(File srcFile, File destFile, int boxWidth,

int boxHeight) throws Exception {

if (isMagick) {

MagickImageScale.resizeFix(srcFile, destFile, boxWidth, boxHeight);

} else {

AverageImageScale.resizeFix(srcFile, destFile, boxWidth, boxHeight);

}
}
 

public void resizeFix(File srcFile, File destFile, int boxWidth,

int boxHeight, int cutTop, int cutLeft, int cutWidth, int catHeight)

throws Exception {

if (isMagick) {

MagickImageScale.resizeFix(srcFile, destFile, boxWidth, boxHeight,
cutTop, cutLeft, cutWidth, catHeight);

} else {

AverageImageScale.resizeFix(srcFile, destFile, boxWidth, boxHeight,
cutTop, cutLeft, cutWidth, catHeight);

}
}
 

public void imageMark(File srcFile, File destFile, int minWidth,

int minHeight, int pos, int offsetX, int offsetY, String text,

Color color, int size, int alpha) throws Exception {System.out.println(isMagick);

if (isMagick) {

MagickImageScale.imageMark(srcFile, destFile, minWidth, minHeight,
pos, offsetX, offsetY, text, color, size, alpha);

} else {
AverageImageScale.imageMark(srcFile, destFile, minWidth, minHeight,
pos, offsetX, offsetY, text, color, size, alpha);
}

}
 

public void imageMark(File srcFile, File destFile, int minWidth,

int minHeight, int pos, int offsetX, int offsetY, File markFile)

throws Exception {

if (isMagick) {

MagickImageScale.imageMark(srcFile, destFile, minWidth, minHeight,
pos, offsetX, offsetY, markFile);

} else {
AverageImageScale.imageMark(srcFile, destFile, minWidth, minHeight,
pos, offsetX, offsetY, markFile);
}

}

 

/**
* 检查是否安装magick
*/

public void init() {System.out.println(tryMagick+"=====a");

if (tryMagick) {

try {

System.setProperty("jmagick.systemclassloader", "no");
new Magick();
log.info("using jmagick");
isMagick = true;

} catch (Throwable e) {

log.warn("load jmagick fail, use java image scale. message:{}",
e.getMessage());
isMagick = false;

}

} else {

log.info("jmagick is disabled.");
isMagick = false;

}
}

private boolean isMagick = false;
private boolean tryMagick = true;

public void setTryMagick(boolean tryMagick) {
this.tryMagick = tryMagick;
}

}

init方法始终没有调用的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

落墨 2021-11-08 23:14:24

在构造函数里面调用init方法,怎么样呢?

霞映澄塘 2021-11-08 23:14:23

单例的?

想挽留 2021-11-08 23:13:36

你这个如果不是lazy 初始化的话  会在读取配置文件的时候 就已经初始化了 

 

甜柠檬 2021-11-08 23:12:59

我想我差不多明白了,在调用那个方法之前那个ImageScaleImpl已经生成实例了,那个init方法只有在生成实例的时候被调用,但是调用ImageScaleImpl里面的方法的时候不会被调用第二次,我想应该是这样的,呵呵

如此安好 2021-11-08 23:12:49

恩,是这样啊,你不是就想生成对象的时候调1次么?

心舞飞扬 2021-11-08 23:08:25

楼主看这个:http://cydia.iteye.com/blog/359760

深巷少女 2021-11-08 23:02:27

我发现把那个context放到src目录下写个测试的是会调用的

ApplicationContext ctx= new ClassPathXmlApplicationContext("core-context.xml");

ImageScaleImpl img=(ImageScaleImpl)ctx.getBean("imageScale");

这样的时候那个init方法是会调用的,但是把这个bena注入到另一个bean里面,在那个bean里面调用ImageScaleImpl 的方法的时候init方法不会默认的被调用

 

奢华的一滴泪 2021-11-08 20:15:23

我是在另个一个bean A里面注入了ImageScaleImpl,然后在A里面用ImageScaleImpl的引用去调用的它的方法,那个init方法就一直没有被调用

葬花如无物 2021-11-07 09:04:41

你是怎么调用的 ?

恋你朝朝暮暮 2021-11-05 17:40:11

那个没看到过怎么搞的,o(╯□╰)o

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文