struts2 依赖注入boolean类型的属性时报错

使用IDE:eclipse;

struts2的版本:2.3.4.1

登录界面代码如下:

 

Html代码  

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  3.     pageEncoding="UTF-8"%>  
  4. <%  
  5. String path = request.getContextPath();  
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  7. %>  
  8. <%@ taglib prefix="s" uri="/struts-tags"%>  
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  10. <html xmlns="http://www.w3.org/1999/xhtml">  
  11. <head>  
  12. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
  13. <title>login</title>  
  14. </head>  
  15. <body>  
  16. <center>  
  17. <h1>login platform</h1>  
  18. <s:form action="/login" method="post" >  
  19.     <table>  
  20.     <tr><td>username:</td> <td><s:textfield name="user.username"  ></s:textfield> </td></tr>  
  21.     <tr><td>password:</td> <td><s:textfield name="user.password"  ></s:textfield> </td></tr>  
  22.     <tr><td>age:</td> <td><s:textfield name="user.age"  ></s:textfield> </td></tr>  
  23.     <tr><td>isBoy:</td> <td><s:textfield name="user.isBoy"  ></s:textfield> </td></tr>  
  24.     <tr> <td colspan="2"><s:submit value="login" ></s:submit> </td></tr>  
  25.       
  26.     </table>  
  27.     </s:form>  
  28.   
  29. </center>  
  30. </body>  
  31. </html>  

 

对应的bean中有一个成员变量是:private boolean isBoy;(是boolean 类型的)

 

 

Java代码  

  1. package com.jn.bean;  
  2.   
  3. public class LoginUser {  
  4.     private int age;  
  5.     private String username;  
  6.     private String password;  
  7.     /*** 
  8.      * 是否是男性 
  9.      */  
  10.     private boolean isBoy;  
  11.   
  12.     public LoginUser() {  
  13.         super();  
  14.     }  
  15.   
  16.     public int getAge() {  
  17.         return age;  
  18.     }  
  19.   
  20.     public void setAge(int age) {  
  21.         this.age = age;  
  22.     }  
  23.   
  24.     public String getUsername() {  
  25.         return username;  
  26.     }  
  27.   
  28.     public void setUsername(String username) {  
  29.         this.username = username;  
  30.     }  
  31.   
  32.     public String getPassword() {  
  33.         return password;  
  34.     }  
  35.   
  36.     public void setPassword(String password) {  
  37.         this.password = password;  
  38.     }  
  39.   
  40.     public boolean isBoy() {  
  41.         return isBoy;  
  42.     }  
  43.   
  44.     public void setBoy(boolean isBoy) {  
  45.         this.isBoy = isBoy;  
  46.     }  
  47.   
  48. }  

 其中的getter,setter方法都是使用eclipse自动生成的。

 

 

对应的action为:

Java代码  

  1. package com.jn.action;  
  2.   
  3. import com.jn.bean.LoginUser;  
  4. import com.opensymphony.xwork2.ActionSupport;  
  5.   
  6. public class LoginVerifyAction extends ActionSupport {  
  7.     private static final long serialVersionUID = -5532496750392156543L;  
  8.     private LoginUser user;  
  9.   
  10.     @Override  
  11.     public String execute() throws Exception {  
  12.         System.out.println("user information:");  
  13.         System.out.println("username:"+user.getUsername());  
  14.         System.out.println("password:"+user.getPassword());  
  15.         System.out.println("age:"+user.getAge());  
  16.         System.out.println("isBoy:"+user.isBoy());  
  17.         return super.execute();  
  18.     }  
  19.       
  20.     public LoginUser getUser() {  
  21.         return user;  
  22.     }  
  23.   
  24.     public void setUser(LoginUser user) {  
  25.         this.user = user;  
  26.     }  
  27.       
  28. }  

 

 

但是登录时报错:

 

Xml代码  

  1. 警告: Error setting expression 'user.isBoy' with value '[Ljava.lang.String;@863941'  
  2. ognl.NoSuchPropertyException: com.jn.bean.LoginUser.isBoy [java.lang.IllegalAccessException: Class ognl.OgnlRuntime can not access a member of class com.jn.bean.LoginUser with modifiers "private"]  
  3.     at ognl.OgnlRuntime.setFieldValue(OgnlRuntime.java:1682)  
  4.     at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:87)  
  5.     at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)  
  6.     at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)  
  7.     at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2315)  
  8.     at ognl.ASTProperty.setValueBody(ASTProperty.java:127)  
  9.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  10.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  11.     at ognl.ASTChain.setValueBody(ASTChain.java:227)  
  12.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  13.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  14.     at ognl.Ognl.setValue(Ognl.java:737)  
  15.     at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217)  
  16.     at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186)  
  17.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173)  
  18.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151)  
  19.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:317)  
  20.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:228)  
  21.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  22.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  23.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)  
  24.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  25.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  26.     at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)  
  27.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  28.     at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)  
  29.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  30.     at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)  
  31.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  32.     at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)  
  33.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  34.     at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)  
  35.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  36.     at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)  
  37.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  38.     at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)  
  39.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  40.     at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)  
  41.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  42.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  43.     at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)  
  44.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  45.     at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)  
  46.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  47.     at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)  
  48.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  49.     at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)  
  50.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  51.     at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)  
  52.     at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)  
  53.     at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)  
  54.     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)  
  55.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
  56.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
  57.     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)  
  58.     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)  
  59.     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)  
  60.     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)  
  61.     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)  
  62.     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)  
  63.     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
  64.     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)  
  65.     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)  
  66.     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)  
  67.     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)  
  68.     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
  69.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
  70.     at java.lang.Thread.run(Thread.java:662)  
  71. Caused by: java.lang.IllegalAccessException: Class ognl.OgnlRuntime can not access a member of class com.jn.bean.LoginUser with modifiers "private"  
  72.     at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)  
  73.     at java.lang.reflect.Field.doSecurityCheck(Field.java:960)  
  74.     at java.lang.reflect.Field.getFieldAccessor(Field.java:896)  
  75.     at java.lang.reflect.Field.set(Field.java:657)  
  76.     at ognl.OgnlRuntime.setFieldValue(OgnlRuntime.java:1674)  
  77.     ... 67 more  
  78. /-- Encapsulated exception ------------\  
  79. java.lang.IllegalAccessException: Class ognl.OgnlRuntime can not access a member of class com.jn.bean.LoginUser with modifiers "private"  
  80.     at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)  
  81.     at java.lang.reflect.Field.doSecurityCheck(Field.java:960)  
  82.     at java.lang.reflect.Field.getFieldAccessor(Field.java:896)  
  83.     at java.lang.reflect.Field.set(Field.java:657)  
  84.     at ognl.OgnlRuntime.setFieldValue(OgnlRuntime.java:1674)  
  85.     at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:87)  
  86.     at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)  
  87.     at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)  
  88.     at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2315)  
  89.     at ognl.ASTProperty.setValueBody(ASTProperty.java:127)  
  90.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  91.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  92.     at ognl.ASTChain.setValueBody(ASTChain.java:227)  
  93.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  94.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  95.     at ognl.Ognl.setValue(Ognl.java:737)  
  96.     at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217)  
  97.     at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186)  
  98.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173)  
  99.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151)  
  100.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:317)  
  101.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:228)  
  102.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  103.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  104.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)  
  105.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  106.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  107.     at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)  
  108.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  109.     at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)  
  110.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  111.     at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)  
  112.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  113.     at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)  
  114.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  115.     at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)  
  116.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  117.     at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)  
  118.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  119.     at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)  
  120.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  121.     at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)  
  122.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  123.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  124.     at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)  
  125.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  126.     at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)  
  127.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  128.     at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)  
  129.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  130.     at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)  
  131.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  132.     at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)  
  133.     at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)  
  134.     at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)  
  135.     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)  
  136.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
  137.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
  138.     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)  
  139.     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)  
  140.     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)  
  141.     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)  
  142.     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)  
  143.     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)  
  144.     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
  145.     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)  
  146.     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)  
  147.     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)  
  148.     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)  
  149.     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
  150.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
  151.     at java.lang.Thread.run(Thread.java:662)  
  152. \--------------------------------------/  

 错误信息说明,struts2没有找到isBoy 的setter方法,因为struts2认为isBoy 的setter方法名应该是setIsBoy

为什么会设置isBoy时就有问题呢?因为按照struts2 的依赖注入规则,setter方法应该是set+成员变量(首字母变为大写)

我把isBoy的setter方法由setBoy 修改为setIsBoy,就好了。

Java代码  

  1. public void setIsBoy(boolean isBoy) {  
  2.         this.isBoy = isBoy;  
  3.     }  

 

总结:如果要依赖注入的属性是boolean类型并且属性名以is开头,就会出现上述问题。

 

解决方法

如果使用struts2的依赖注入,那么boolean 类型的属性名不要以is开头。我修改方法是把属性名由isBoy改为boy:

Java代码  

  1. package com.jn.bean;  
  2.   
  3. public class LoginUser {  
  4.     private int age;  
  5.     private String username;  
  6.     private String password;  
  7.     /*** 
  8.      * 是否是男性 
  9.      */  
  10.     private boolean boy;  
  11.   
  12.     public LoginUser() {  
  13.         super();  
  14.     }  
  15.   
  16.     public int getAge() {  
  17.         return age;  
  18.     }  
  19.   
  20.     public void setAge(int age) {  
  21.         this.age = age;  
  22.     }  
  23.   
  24.     public String getUsername() {  
  25.         return username;  
  26.     }  
  27.   
  28.     public void setUsername(String username) {  
  29.         this.username = username;  
  30.     }  
  31.   
  32.     public String getPassword() {  
  33.         return password;  
  34.     }  
  35.   
  36.     public void setPassword(String password) {  
  37.         this.password = password;  
  38.     }  
  39.   
  40.     public boolean isBoy() {  
  41.         return boy;  
  42.     }  
  43.   
  44.     public void setBoy(boolean boy) {  
  45.         this.boy = boy;  
  46.     }  
  47.   
  48. }  

 登录页面中把user.isBoy 改为user.boy 就好了。

时间: 2025-01-24 19:35:54

struts2 依赖注入boolean类型的属性时报错的相关文章

Win7系统读取Administrator属性时报错怎么办?

Win7系统读取Administrator属性时报错怎么办? 1.按下WIN+R,打开运行,然后输入services.msc 确定; 2.打开win7的服务列表后,双击server服务; 3.查看启动类型是否为禁用,如禁用改为自动,然后应用,并启动该服务; 4.启动server服务后,我们还需要启动"workstation"服务,操作方法和上面的一样; 5.最后再进入用户管理,双击打开Win7的内置管理员帐户Administrator,就不会再出现这样的错误了.

【杂谈】依赖注入那些事儿(转)

今天在网上看了一篇非常不错的文章,谈论的就是著名的"依赖注入",在我学习Spring的时间,总是在思考spring的优点在哪里,为什么一定要使用spring框架?为什么bean要写在配置文件而不new出来?为什么要有"依赖注入"和"控制反转"等词汇?在这篇文章里,我对上述概念理解的十分透彻. 文章的例程是C#语言,不过不影响Java程序猿们的欣赏,面向对象语言相似度很高,废话不多说了,赶快来看看这篇不错的文章吧! 目录 写在前面的话 目录 1 I

解读ASP.NET 5 &amp; MVC6系列(7):依赖注入

原文:解读ASP.NET 5 & MVC6系列(7):依赖注入 在前面的章节(Middleware章节)中,我们提到了依赖注入功能(Dependency Injection),ASP.NET 5正式将依赖注入进行了全功能的实现,以便开发人员能够开发更具弹性的组件程序,MVC6也利用了依赖注入的功能重新对Controller和View的服务注入功能进行了重新设计:未来的依赖注入功能还可能提供更多的API,所有如果还没有开始接触依赖注入的话,就得好好学一下了. 在之前版本的依赖注入功能里,依赖注入的

解读ASP.NET 5 &amp; MVC6系列教程(7):依赖注入_自学过程

在前面的章节(Middleware章节)中,我们提到了依赖注入功能(Dependency Injection),ASP.NET 5正式将依赖注入进行了全功能的实现,以便开发人员能够开发更具弹性的组件程序,MVC6也利用了依赖注入的功能重新对Controller和View的服务注入功能进行了重新设计:未来的依赖注入功能还可能提供更多的API,所有如果还没有开始接触依赖注入的话,就得好好学一下了. 在之前版本的依赖注入功能里,依赖注入的入口有MVC中的IControllerFactory和Web A

ABP框架的基础配置及依赖注入讲解_基础应用

配置ABP配置是通过在自己模块的PreInitialize方法中来实现的 代码示例如下: public class SimpleTaskSystemModule : AbpModule { public override void PreInitialize() { //在你的应用中添加语言包,这个是英语和作者的土耳其语. Configuration.Localization.Languages.Add(new LanguageInfo("en", "English"

浅谈struts和依赖注入在项目中的应用

我喜欢struts,喜欢ibatis,喜欢spring,但我却喜欢.net,这实在是件很矛盾的事情..net很好用,但在做项目的过程,总觉得缺少了点什么,对了,是框架.在java的世界里,有着许多成熟优秀的框架,但.net的框架,可选择的实在很少.在盼星星盼月亮的漫长过程里,终于盼到了Asp.net MVC,恕我不才,看来看去,都觉得这Asp.net MVC用起来实在是麻烦.我还是喜欢使用struts,尽管我很烦恼那些配置文件,但配置文件确实给我们带来了很多的好处.能轻松的扩展,轻易的修改.不过

依赖注入 概念演示示例

最近开始研究依赖注入.刚刚开始研究这个东西,遇到不少问题.首先,概念就理解的不是很清楚,更不要说代码实现点什么了. Google之下找到一片好文:http://tech.it168.com/w/d/2007-07-10/200707100933943.shtml  看了下,对依赖注入理解清晰了不少.       不过,感觉作者为了简单,把所有的代码文件都放在了一个dll中.我觉得这样并不会 对读者理解依赖注入有帮助,所以重新整理了下,放在这里和大家分享.欢迎提出批评意见! 代码  以下是代码清单

依赖注入框架Autofac类型注册与简单使用

Autofac     Autofac是一套高效的依赖注入框架.     Autofac官方网站:http://autofac.org/     Autofac在Github上的开源项目:https://github.com/autofac/Autofac     Autofac安装:通过VS的Nuget可以很方便的获取. IoC/DI     关于IoC与DI的概念,网上有很多相关的博客,大家可以稍微了解一下,对比一下.     我个人的理解就是按照英文的中文翻译来理解的:     IoC:

bean-spring4.0.6 注入Date类型时,属性编辑器无效

问题描述 spring4.0.6 注入Date类型时,属性编辑器无效 这是MyDate类 package org.xjs.pojo; import java.util.Date; public class MyDate { private Date date; public Date getDate() { return this.date; } public void setDate(Date date) { this.date = date; } } 这是自定义属性编辑器类 package