spring IOC初始化对象
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
在构造函数里面调用init方法,怎么样呢?
单例的?
你这个如果不是lazy 初始化的话 会在读取配置文件的时候 就已经初始化了
我想我差不多明白了,在调用那个方法之前那个ImageScaleImpl已经生成实例了,那个init方法只有在生成实例的时候被调用,但是调用ImageScaleImpl里面的方法的时候不会被调用第二次,我想应该是这样的,呵呵
恩,是这样啊,你不是就想生成对象的时候调1次么?
楼主看这个:http://cydia.iteye.com/blog/359760
我发现把那个context放到src目录下写个测试的是会调用的
ApplicationContext ctx= new ClassPathXmlApplicationContext("core-context.xml");
ImageScaleImpl img=(ImageScaleImpl)ctx.getBean("imageScale");
这样的时候那个init方法是会调用的,但是把这个bena注入到另一个bean里面,在那个bean里面调用ImageScaleImpl 的方法的时候init方法不会默认的被调用
我是在另个一个bean A里面注入了ImageScaleImpl,然后在A里面用ImageScaleImpl的引用去调用的它的方法,那个init方法就一直没有被调用
你是怎么调用的 ?
那个没看到过怎么搞的,o(╯□╰)o
不懂java