整合Spring.net到asp.net网站开发中初探
整合Spring.net到asp.net网站开发中初探
Spring提供了一个轻量级的用于构建企业级的应用程序的解决方案。Spring提供一致并清晰的配置并整合AOP(Aspect-Oriented Programming)至你的软件中。Spring.net最耀眼的功能是在中间层提供声明式事务管理用于构建全功能的ASP.NET框架。
Spring.net是一个提供综合的基础结构用于支持企业级.Net开发的应用程序类库。它帮助我们在程序开发过程中减少复杂性。
将Spring.net应用到asp.net中
首先在web.Config中配置:(初次配置建议使用.net framework 2.0,因为其web.config相对简洁一些,可以给配置减少些麻烦)
<configuration>
<configSections>
<!-- Spring -->
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
<section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
</sectionGroup>
<!-- Spring -->
</configSections>
<spring>
<parsers>
</parsers>
<context>
<resource uri="config://spring/objects"/>
</context>
<objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database">
<!-- Pages -->
<object type="Default.aspx">
</object>
</objects>
</spring>
<sysyem.web>
<httpHandlers>
<!-- Spring Handler -->
<add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
</httpHandlers>
<httpModules>
<add name="SpringModule" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
</httpModules>
</sysyem.web>
</configuration> Default.aspx.cs文件:
public partial class _Default : System.Web.UI.Page
{
private string message;
public string Message
{
set { message = value; }
get { return message; }
}
private Math math;
public Math Math
{
set { math = value; }
get { return math; }
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Message);
Response.Write("</br>");
Response.Write(Math.Add(20, 60));
}
}在app_code文件中添加math.cs文件,代码如下:
public class Math
{
public int Add(int a, int b)
{
return a + b;
}
}在web.config稍做些修改如下:
<spring>
......
<objects xmlns=http://www.springframework.net xmlns:db="http://www.springframework.net/database">
<object name="MyMathObj" type="Math, App_code" />
<!-- Pages -->
<object type="Default.aspx">
<property name="Message" value="Hello from Spring.Net"/>
<property name="Math" ref="MyMathObj"/>
</object>
</objects>
</spring> 翻译的文章来源自:http://www.codeproject.com/KB/aspnet/spring-asp.aspx
在执行上述网址下载的源代码时出现如下问题:
一、The IDbCommand and IDbConnection implementation in the assembly MySql.Data could not be found. Ensure that the assembly MySql.Data is located in the application directory or in the Global Assembly Cache. If the assembly is in the GAC, use <qualifyAssembly/> element in the application configuration file to specify the full name of the assembly.
该问题有些蹊跷,将mysql.data拷贝到本地bin文件夹中可解决
二、Error thrown by a dependency of object 'MySql' defined in 'assembly [Spring.Data]

在web.config中添加如下代码可解决:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="5.2.5.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime> 参考自: http://forum.springframework.net/archive/index.php/t-950.html
http://forum.springframework.net/showthread.php?t=3564
三、Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition
在web.config中添加如下代码可解决:
<!--TxManager-->
<object id=”HibernateTransactionManager” type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate12">
<property name="DbProvider" ref="DbProviderMySQL"/>
<property name="SessionFactory" ref="SessionFactory"/>
</object>
<object id=”PersonDaoTx” type=”Spring.Transaction.Interceptor.TransactionProxyFactoryObject,Spring.Data”>
<property name="PlatformTransactionManager" ref="HibernateTransactionManager"/>
<property name=”Target” ref=”PersonDao”/>
<property name=”TransactionAttributes”>
<name-values>
<add key=”Save*” value=”PROPAGATION_REQUIRES_NEW”/>
<add key=”SaveO*” value=”PROPAGATION_REQUIRES_NEW”/>
<add key=”Delete*” value=”PROPAGATION_REQUIRED”/>
<add key=”Query*” value=”PROPAGATON_REQUIRED”/>
</name_values>
</property>
</object>
整合Spring.net到asp.net网站开发中初探的更多相关文章
- ASP.NET网站开发中的配置文件
来源:微信公众号CodeL 1.配置文件层次分类 Machine.config: 对.netframework整体的配置 web.config(framework目录下): 对所有项目所公有的应用 ...
- asp.net 网站开发流程总结
由于这学期要做asp.net的网站开发,导师让我们在前期做详细的计划说明,时间安排.由于网站开发流程不知道,以及需要学什么指示都是盲懂,所以计划安排需在了解大致流程之后才能做出来,一下是询问同学和在网 ...
- 网站开发中很实用的 HTML5 & jQuery 插件
这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...
- 网站开发中使用javascript获取浏览器滚动条宽度
在网站开发中,有时候需要获取浏览器滚动条的宽度,在武汉蚂蹄软件服务中心的技术人员指导之下,我实现了该需求.记录如下: 首先说明一下原理: ①生成一个div,设置滚动条不可见,记录其宽度: ②将上面的d ...
- asp.net -mvc框架复习(1)-ASP.NET网站开发概述
1.网站开发的基本步骤: 2.网站开发的需要的知识结构 (1)网站开发前台页面技术 页面设计:HTML .CSS+DIV 页面特效:JavaScript.jQery (2)OOP编程核心公共技能 C ...
- CGI、ASP、PHP、JSP、 ASP.NET网站开发语言比较
一.主流网站开发语言的简介及优缺点. 现在主流的网站开发语言主要包括cgi.asp.php.asp.net.jsp等. HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持. (一) ...
- 网站开发中的相对URL问题--JSP
问题描述: 入门网站开发时,我们会在相对URL问题上有疑惑.例如,在一个jsp页面中引入css外部文件, <link rel="stylesheet" hr ...
- Spring Boot学习笔记:项目开发中规范总结
Spring Boot在企业开发中使用的很广泛,不同的企业有不同的开发规范和标准.但是有些标准都是一致的. 项目包结构 以下是一个项目常见的包结构 以上是一个项目的基本目录结构,不同的项目结构会有差异 ...
- 我在网站开发中经常用到的几个js函数01
这是我在最近的一个网站项目中频繁用到的几个js函数,非常实用.包括:1.js获取地址栏参数:2.返回cookies字符串中指定键对应的值:3.json格式的日期转换为正常格式4.清除cookie. / ...
随机推荐
- vs2008调试 Release(链接器来生成调试信息)
VS2008 Release 修改配置: 1.项目——>属性——>C/ C++ ——> 常规 ——>调试信息格式——>用于“编辑并继续”的程序数据库(/ZI) 2.项目— ...
- 大数据为什么要选择Spark
大数据为什么要选择Spark Spark是一个基于内存计算的开源集群计算系统,目的是更快速的进行数据分析. Spark由加州伯克利大学AMP实验室Matei为主的小团队使用Scala开发开发,其核心部 ...
- poj1207
The 3n + 1 problem Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 50513 Accepted: 15 ...
- C# 4.0 新特性-dynamic 【转】
前段时间看过一些关于dynamic这个C#4中的新特性,看到有些朋友认为dynamic的弊大于利,如无法使用编译器智能提示,无法在编译时做静态类型检查,性能差等等.因此在这篇文章中我将就这些问题来对d ...
- ASP.NET递归添加树节点
表设计如图: id title parentid 1 asp.net 0 2 c# 0 3 c#_ ...
- 20160121--Spring
package com.hanqi; public class HelloWorld { public HelloWorld() { } public HelloWorld(String name) ...
- return break continue 的区别
1)break 直接跳出当前的循环,从当前循环外面开始执行,忽略循环体中任何其他语句和循环条件测试.他只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来 ...
- leetcode First Missing Positive python
class Solution(object): def firstMissingPositive(self, nums): """ :type nums: List[in ...
- RabbitMQ 消息队列
一:简介 RabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务 ...
- IntelliJ IDEA 14 注册码及注册码生成器
几个license: (1) key:IDEA value:61156-YRN2M-5MNCN-NZ8D2-7B4EW-U12L4 (2) key:huangweivalue:97493-G3A41- ...