Spring IoC 在子类中为父类注入属性值

1、基类

package com.grgbanking.it.base;

import com.grgbanking.it.wx.common.creator.WXBaseMessageCreator;
import com.grgbanking.it.wx.entity.WXPassiveMessage;
import com.grgbanking.it.wx.entity.WXVerify;

public class WXConnectionService implements IWXConnectionService{
	protected WXBaseMessageCreator messageCreator;

	public void setMessageCreator(WXBaseMessageCreator messageCreator) {
		this.messageCreator = messageCreator;
	}

	/**
	 * 获取回调校验的值
	 * verify
	 *
	 * @param verify
	 * @throws Exception
	 * @exception
	 * @since  1.0.0
	 */
	@Override
	public String getEcho(WXVerify verify) throws Exception {
		return messageCreator.getEcho(verify);
	}
	/**
	 * 接收微信过来的信息
	 * reciveMsg
	 *
	 * @param verify
	 * @return
	 * @throws Exception
	 * @exception
	 * @since  1.0.0
	 */
	public WXPassiveMessage reciveMsg(WXVerify verify)throws Exception {
		return messageCreator.reciveMessage(verify);
	}
}

2、子类

package com.grgbanking.it.external.service.impl;

import java.util.List;

import javax.annotation.PostConstruct;

import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.grgbanking.it.base.WXConnectionService;
import com.grgbanking.it.common.entity.PageQuery;
import com.grgbanking.it.common.json.JSONHelper;
import com.grgbanking.it.common.util.DateUtil;
import com.grgbanking.it.common.util.OAMessager;
import com.grgbanking.it.common.util.poi.POIShellContructor;
import com.grgbanking.it.external.component.WXSupplierMessageCreator;
import com.grgbanking.it.external.dao.ISupplierDao;
import com.grgbanking.it.external.dao.ISupplierMsnDao;
import com.grgbanking.it.external.entity.Supplier;
import com.grgbanking.it.external.entity.SupplierMsn;
import com.grgbanking.it.external.service.ISupplierService;
import com.grgbanking.it.system.component.WXOrganizationCreator;
import com.grgbanking.it.system.dao.ISystemPropertyDao;
import com.grgbanking.it.system.entity.SystemProperty;

/**
 * 供应商管理
 *
 * SupplierMsnService
 *
 * @author 潘广伟
 * @Email [email protected]
 * @Date 2014-12-31 上午9:48:47
 *
 * @version 1.0.0
 *
 */
@Service
public class SupplierService extends WXConnectionService implements ISupplierService {
	@Autowired
	private ISupplierMsnDao<SupplierMsn, Integer> supplierMsnDao;
	@Autowired
	private ISupplierDao<Supplier, String> supplierDao;
	@Autowired
	private ISystemPropertyDao<SystemProperty, String> systemPropertyDao;
	@Autowired
	private WXSupplierMessageCreator messageCreator;
	@Autowired
	private WXOrganizationCreator organizationCreator;

	/**
	 * 为父类中的messageCreator初始化
	 * initMessageCreator
	 *
	 * @exception
	 * @since  1.0.0
	 */
	@PostConstruct
	public void initMessageCreator() {
		super.setMessageCreator(messageCreator);
	}

	/**
	 * 分页查询供应商信息
	 * findByPage
	 *
	 * @param query
	 * @param keyword
	 * @return
	 * @exception
	 * @since  1.0.0
	 */
	@Override
	public String findByPage(PageQuery query, String keyword) {
		String hql = "from Supplier t";

		List<Supplier> list = supplierDao.pageByHQL(hql, query.getStart(), query.getLimit());
		Long total = supplierDao.getTotalByHQL(hql);
		return JSONHelper.convertToGrid(total, list);
	}

	...
}

3、简单解释

@PostConstruct是Java EE 5引入的注解,Spring允许开发者在受管Bean中使用它。当DI容器实例化当前受管Bean时,@PostConstruct注解的方法会被自动触发,从而完成一些初始化工作。

上面2中的子类在initMessageCreator()方法中,将messageCreator对象注入到了它的父类中去。

时间: 2024-10-08 13:57:20

Spring IoC 在子类中为父类注入属性值的相关文章

在子类中重用父类的属性

在子类中派生出新的方法重用父类的方法,有两种实现方式 方式一:指名道姓(不依赖继承) class Hero: def __init__(self,name,damage,zing): self.name = name self.damage = damage self.zing = zing def attack(self,enemy): enemy.zing -= self.damage class Yang(Hero): def attack(self,enemy): Hero.attack

继承实现的原理、子类中调用父类的方法、封装

一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--->A--->E--->B--->C. class E: def test(self): print('from E') class A(E): def test(self): print('from A') class B: def test(self): print('from B'

c++与java中子类中调用父类成员的方法

1 java中: 2 import java.util.Scanner; 3 public class ClassTest{ 4 public static void main(String args[]){ 5 child ch=new child(2); 6 parent p=ch; 7 p.print(); 8 //p.print2();//调用错误,父类中没有改成员方法,该方法只属于子类! 9 } 10 } 11 12 class parent{ 13 int xx; 14 parent

Day17:继承实现的原理、子类中调用父类的方法、封装

一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--->A--->E--->B--->C. class E: def test(self): print('from E') class A(E): def test(self): print('from A') class B: def test(self): print('from B'

Python之面向对象的组合、多态、菱形问题、子类中重用父类的两种方式

一.组合 ''' 1.什么是组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外一个类的对象 2.为何用组合 组合也是用来解决类与类直接代码冗余问题的 3.如何用组合 ''' # 继承减少代码冗余,但是将类与类进行了强耦合,python不崇尚,所以能不用继承就尽量不用继承 class OldboyPeople: school = 'oldboy' def __init__(self, name, age, sex): self.name = name self.age = age se

spring读取classpath目录下的配置文件通过表达式去注入属性值.txt

spring读取配置文件: 1. spring加载配置文件: <context:property-placeholder location="classpath:config/system.properties"/> 2. 配置文件内容: YTZ_SPECIAL_USER_PHONE=13912622596,18721293900,18656253360 YTZ_SPECIAL_USER_PHONE2=13912622596,18721293900,18656253360

js中获取css样式属性值

关于js中style,currentStyle和getComputedStyle几个注意的地方 (1)用js的style只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的. (2)currentStyle可以弥补style的不足(可获取内联样式,内部样式和外部样式),但是只适用于IE. (3)getComputedStyle同currentStyle作用相同,但是适用于FF.opera.safari.chrome. 注意: ① currentStyle和getComputedS

在子类中重用父类的方法或属性

在子类派生出新发方式中重用父类的方法,有两种实现方式1.指名道姓(不依赖继承)# class Hero:# def __init__(self,nickname,life_value,aggresivity):# self.nickname=nickname# self.life_value=life_value# self.aggresivity=aggresivity# def attack(self,enemy):# enemy.life_value-=self.aggresivity##

Spring根据XML配置文件 p名称空间注入属性

要生成对象并通过名称空间注入属性的类 代码如下: package com.swift; public class User { private String userName; public void setUserName(String userName) { this.userName = userName; } public String fun() { return "User's fun is ready."+this.userName; } } XML配置文件写法如下: &