Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
希川
container-mini
提交
e9dd90a7
C
container-mini
项目概览
希川
/
container-mini
通知
6
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
container-mini
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e9dd90a7
编写于
11月 05, 2021
作者:
感
感冒灵
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
<fix>: 修复容器初始化失败的BUG
上级
bbce0776
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
30 addition
and
7 deletion
+30
-7
src/main/java/cn/noexception/container/aop/framework/adapter/MethodBeforeAdviceInterceptor.java
.../aop/framework/adapter/MethodBeforeAdviceInterceptor.java
+2
-0
src/main/java/cn/noexception/container/aop/framework/autoproxy/DefaultAdvisorAutoProxyCreator.java
...p/framework/autoproxy/DefaultAdvisorAutoProxyCreator.java
+2
-2
src/main/java/cn/noexception/container/factory/support/AbstractAutowiredCapableBeanFactory.java
.../factory/support/AbstractAutowiredCapableBeanFactory.java
+25
-4
src/test/resources/config_aop.xml
src/test/resources/config_aop.xml
+1
-1
未找到文件。
src/main/java/cn/noexception/container/aop/framework/adapter/MethodBeforeAdviceInterceptor.java
浏览文件 @
e9dd90a7
...
...
@@ -13,6 +13,8 @@ import org.aopalliance.intercept.MethodInvocation;
public
class
MethodBeforeAdviceInterceptor
implements
MethodInterceptor
{
private
MethodBeforeAdvice
advice
;
public
MethodBeforeAdviceInterceptor
(){}
public
MethodBeforeAdviceInterceptor
(
MethodBeforeAdvice
advice
)
{
this
.
advice
=
advice
;
}
...
...
src/main/java/cn/noexception/container/aop/framework/autoproxy/DefaultAdvisorAutoProxyCreator.java
浏览文件 @
e9dd90a7
...
...
@@ -32,12 +32,12 @@ public class DefaultAdvisorAutoProxyCreator implements InstantiationAwareBeanPos
@Override
public
Object
postProcessBeforeInitialization
(
Object
bean
,
String
beanName
)
throws
BeansException
{
return
null
;
return
bean
;
}
@Override
public
Object
postProcessAfterInitialization
(
Object
bean
,
String
beanName
)
throws
BeansException
{
return
null
;
return
bean
;
}
@Override
...
...
src/main/java/cn/noexception/container/factory/support/AbstractAutowiredCapableBeanFactory.java
浏览文件 @
e9dd90a7
...
...
@@ -6,10 +6,7 @@ import cn.noexception.container.BeansException;
import
cn.noexception.container.PropertyValue
;
import
cn.noexception.container.PropertyValues
;
import
cn.noexception.container.factory.*
;
import
cn.noexception.container.factory.config.AutowireCapableBeanFactory
;
import
cn.noexception.container.factory.config.BeanDefinition
;
import
cn.noexception.container.factory.config.BeanPostProcessor
;
import
cn.noexception.container.factory.config.BeanReference
;
import
cn.noexception.container.factory.config.*
;
import
java.lang.reflect.Constructor
;
import
java.lang.reflect.Method
;
...
...
@@ -28,6 +25,12 @@ public abstract class AbstractAutowiredCapableBeanFactory extends AbstractBeanFa
protected
Object
createBean
(
String
beanName
,
BeanDefinition
beanDefinition
,
Object
[]
args
)
throws
BeansException
{
Object
bean
=
null
;
try
{
// 判断是否返回代理Bean对象
bean
=
resolveBeforeInstantiation
(
beanName
,
beanDefinition
);
if
(
null
!=
bean
)
{
return
bean
;
}
// 实例化 Bean
bean
=
createBeanInstance
(
beanDefinition
,
beanName
,
args
);
// 给 Bean 填充属性值
applyPropertyValues
(
beanName
,
bean
,
beanDefinition
);
...
...
@@ -46,6 +49,24 @@ public abstract class AbstractAutowiredCapableBeanFactory extends AbstractBeanFa
return
bean
;
}
protected
Object
resolveBeforeInstantiation
(
String
beanName
,
BeanDefinition
beanDefinition
)
{
Object
bean
=
applyBeanPostProcessorsBeforeInstantiation
(
beanDefinition
.
getBeanClass
(),
beanName
);
if
(
null
!=
bean
)
{
bean
=
applyBeanPostProcessorsAfterInitialization
(
bean
,
beanName
);
}
return
bean
;
}
protected
Object
applyBeanPostProcessorsBeforeInstantiation
(
Class
<?>
beanClass
,
String
beanName
)
{
for
(
BeanPostProcessor
beanPostProcessor
:
getBeanPostProcessors
())
{
if
(
beanPostProcessor
instanceof
InstantiationAwareBeanPostProcessor
)
{
Object
result
=
((
InstantiationAwareBeanPostProcessor
)
beanPostProcessor
).
postProcessBeforeInstantiation
(
beanClass
,
beanName
);
if
(
null
!=
result
)
return
result
;
}
}
return
null
;
}
protected
void
registerDisposableBeanIfNecessary
(
String
beanName
,
Object
bean
,
BeanDefinition
beanDefinition
)
{
// 非 Singleton 类型的 Bean 不执行销毁方法
if
(!
beanDefinition
.
isSingleton
())
return
;
...
...
src/test/resources/config_aop.xml
浏览文件 @
e9dd90a7
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean
id=
"userService"
class=
"cn.noexception.test.bean.UserService"
/>
<bean
id=
"userService"
class=
"cn.noexception.test.bean.
impl.
UserService"
/>
<bean
class=
"cn.noexception.container.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
/>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录