Spring.net -- 目前不支持getter、setter的访问限定符
2008-05-29 18:39
253 查看
如果你使用Spring.net作为你的IOC容器,那么一定要注意这个问题--Spring.net 目前不支持getter、setter的访问限定符。
我们通常使用setter属性来进行依赖注入,如:
public class A
{
#region B
private B b;
public B B
{
get { return b; }
set { b = value; }
}
#endregion
}
public class B
{
}
针对上述的定义,在Spring.net中配置A类型的对象,并注入B类型对象的依赖,是可以完全正常工作的。
但是,假设,我希望A类型的B属性只能给A的派生类访问,我们通常会为B属性的getter加上Protected限定符,就像这样:
public class A
{
#region B
private B b;
public B B
{
protected get { return b; }
set { b = value; }
}
#endregion
}
public class B
{
}
在这种定义下,如果仍然采用一样的spring配置,则会抛出"未将对象引用设置到对象实例"的异常 -- 非常常见的一个异常。
当我依照这个异常提示在数以千计的组件构成的应用程序中去查找可能的bug时,那是怎样的一种痛苦--实际上我的代码和配置都没有问题,是spring.net开了一个玩笑 -- 为了搞清楚这个玩笑,我花了将近2个小时。所以,我不希望朋友你在以后会因为同样的问题而再次浪费我们宝贵的时间。
我们通常使用setter属性来进行依赖注入,如:
public class A
{
#region B
private B b;
public B B
{
get { return b; }
set { b = value; }
}
#endregion
}
public class B
{
}
针对上述的定义,在Spring.net中配置A类型的对象,并注入B类型对象的依赖,是可以完全正常工作的。
但是,假设,我希望A类型的B属性只能给A的派生类访问,我们通常会为B属性的getter加上Protected限定符,就像这样:
public class A
{
#region B
private B b;
public B B
{
protected get { return b; }
set { b = value; }
}
#endregion
}
public class B
{
}
在这种定义下,如果仍然采用一样的spring配置,则会抛出"未将对象引用设置到对象实例"的异常 -- 非常常见的一个异常。
当我依照这个异常提示在数以千计的组件构成的应用程序中去查找可能的bug时,那是怎样的一种痛苦--实际上我的代码和配置都没有问题,是spring.net开了一个玩笑 -- 为了搞清楚这个玩笑,我花了将近2个小时。所以,我不希望朋友你在以后会因为同样的问题而再次浪费我们宝贵的时间。
相关文章推荐
- Spring.net -- 目前不支持getter、setter的访问限定符
- spring.net 实现访问oracle数据库,对表增、删、改、查支持事务拦截
- DotNet企业级架构实战之4—Spring.net下的nHibernate数据访问模板
- www.codeplus.net 由于正在进行备案,所以目前无法访问。
- 宏正ATEN推出支持4位远程用户访问的全新KVM Over the NET™系列方案
- spring.net + nhibernate 多数据库的支持,以及跨数据库的事物处理的讨论
- web.config 限定访问权限 Asp.net的身份验证有有三种
- 国内第一个支持Spring.NET/NHibernate/Ajax的开源的Framework
- 访问封装内容,setter和getter方法使用
- .net企业级架构实战之4——Spring.net下的nHibernate数据访问模板[1]
- JSP自定义标签扩展----支持EL,访问Spring容器
- Spring对数据库访问技术的支持——Spring DAO小结
- Spring 3.1 MVC REST 支持之跨域访问(Cross-origin resource sharing)
- Spring支持下HibernateTemplate访问Hibernate
- Spring.Net.FrameworkV3.0 版本发布了,感谢大家的支持
- 在dotnet core web api中支持CORS(跨域访问)
- web.config 限定访问权限 Asp.net的身份验证有有三种
- .net企业级架构实战之4——Spring.net下的nHibernate数据访问模板[2]
- GoldArch0.1(spring.net1.3) 数据访问框架
- SpringMvc支持跨域访问,Spring跨域访问,SpringMvc @CrossOrigin 跨域[转]