1.3.0 简化bus使用,增加remove前后事件,简化auto config注册方式
This commit is contained in:
@@ -7,9 +7,8 @@ import org.springframework.beans.factory.BeanFactory
|
||||
class MongodbRepoFactory(
|
||||
supertype: Class<*>,
|
||||
var beanFactory: BeanFactory,
|
||||
var implementBeanNames: Array<String> = arrayOf()
|
||||
) : Factory(supertype) {
|
||||
override fun createProxy(): Proxy {
|
||||
return MongodbRepoProxy(supertype, this.beanFactory, this.implementBeanNames)
|
||||
return MongodbRepoProxy(supertype, this.beanFactory)
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import org.springframework.data.mongodb.core.MongoTemplate
|
||||
import java.lang.reflect.Method
|
||||
|
||||
class MongodbRepoProxy(
|
||||
private var supertype: Class<*>, private var beanFactory: BeanFactory, implementBeanNames: Array<String> = arrayOf()
|
||||
private var supertype: Class<*>, private var beanFactory: BeanFactory
|
||||
) : Proxy() {
|
||||
|
||||
private var mongodbRepo: Any
|
||||
@@ -28,15 +28,11 @@ class MongodbRepoProxy(
|
||||
interfaceClazz = IQuery::class.java
|
||||
}
|
||||
|
||||
if (implementBeanNames.isEmpty()) {
|
||||
val constructor = clazz.getConstructor(Class::class.java, MongoTemplate::class.java)
|
||||
this.mongodbRepo = constructor.newInstance(
|
||||
this.supertype.getGenericInterface(interfaceClazz)!!.actualTypeArguments[0],
|
||||
this.beanFactory.getBean(MongoTemplate::class.java)
|
||||
)
|
||||
} else {
|
||||
this.mongodbRepo = this.beanFactory.getBean(implementBeanNames[0])
|
||||
}
|
||||
val constructor = clazz.getConstructor(Class::class.java, MongoTemplate::class.java)
|
||||
this.mongodbRepo = constructor.newInstance(
|
||||
this.supertype.getGenericInterface(interfaceClazz)!!.actualTypeArguments[0],
|
||||
this.beanFactory.getBean(MongoTemplate::class.java)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -34,20 +34,20 @@ class MongodbRepoRegister : Register() {
|
||||
|
||||
// 尝试获取实际继承类型
|
||||
val implBeanDefinitions = this.doScan(basePackages, arrayOf(this.interfaceFilter(arrayOf(beanClazz))))
|
||||
implBeanDefinitions.forEach {
|
||||
it.isAutowireCandidate = false
|
||||
result[it.beanClassName!!] = it
|
||||
}
|
||||
|
||||
// 构造BeanDefinition
|
||||
val builder = BeanDefinitionBuilder.genericBeanDefinition(beanClazz)
|
||||
builder.addConstructorArgValue(beanClazz)
|
||||
builder.addConstructorArgValue(this._beanFactory)
|
||||
builder.addConstructorArgValue(implBeanDefinitions.map { it.beanClassName })
|
||||
val definition = builder.rawBeanDefinition as GenericBeanDefinition
|
||||
definition.beanClass = MongodbRepoFactory::class.java
|
||||
definition.autowireMode = GenericBeanDefinition.AUTOWIRE_BY_TYPE
|
||||
result[beanClazz.name] = definition
|
||||
if (implBeanDefinitions.isNotEmpty()) {
|
||||
implBeanDefinitions.forEach {
|
||||
result[it.beanClassName!!] = it
|
||||
}
|
||||
} else { // 构造BeanDefinition
|
||||
val builder = BeanDefinitionBuilder.genericBeanDefinition(beanClazz)
|
||||
builder.addConstructorArgValue(beanClazz)
|
||||
builder.addConstructorArgValue(this._beanFactory)
|
||||
val definition = builder.rawBeanDefinition as GenericBeanDefinition
|
||||
definition.beanClass = MongodbRepoFactory::class.java
|
||||
definition.autowireMode = GenericBeanDefinition.AUTOWIRE_BY_TYPE
|
||||
result[beanClazz.name] = definition
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ open class MongodbRepository<TAggregateRoot : IAggregateRoot<ID>, ID>(
|
||||
this.repo.save(list)
|
||||
}
|
||||
|
||||
override fun <TAggregateRoot> count(params: Map<String, Any>?): Int {
|
||||
override fun count(params: Map<String, Any>?): Int {
|
||||
val query = Query()
|
||||
return this.repo.count(query.where(params, clazz), clazz).toInt()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user