又是一个周末,感受着外面30°的高温,果断宅在家里,闲来无事,就研究了一下spring .net 框架, 在这里不得不说 vs2013确实是一个强大的开发工具(起码对于.net开发来说是这样的),哈哈 废话不多说了开始展示一下我的成果吧.

1、  项目采用多层架构 IRepository/Repository/Service/Web层,而spring.net主要安装在service层,这样做的目的就是使注入和web层分开,使代码逻辑更加清晰,而在web层只需根据service层的类进行静态调用即可。项目架构如图所示:

在此之前需要在webconfig中配置spring.xml目录,代码如下所示:

   <!--Spring.Net节点详细配置-->
<spring>
<context>
<!--读取嵌入在程序集中的配置文件-->
<!--<resource uri="file://~/Config/Spring.xml"/>-->
<!--读取嵌入在程序集中的配置文件 将Spring.xml的属性设置为【嵌入的资源】-->
<resource uri="assembly://Spring.Net.Service/Spring.Net.Service.Config/Spring.xml"/>
</context>
</spring>

下面就以BookInfo类为例贴出代码

1、IBookInfo接口类定义代码,定义函数

 namespace Spring.Net.IRepository
{
public interface IBookInfo
{
string GetBook();
}
}

2、BookInfo实现类代码

 namespace Spring.Net.Repository
{
public class BookInfo : IBookInfo
{
public string GetBook()
{
return "Hello World!";
}
}
}

3、BookService逻辑处理类代码,在该类中用到了依赖注入技术,将BookInfo注入到Service中,需在Spring.xml中进行配置

 namespace Spring.Net.Service
{
public class BookInfoService
{
static IBookInfo Book { get; set; } public static string GetBook()
{
return Book.GetBook();
}
}
}

4、spring.xml配置代码

 <objects xmlns="http://www.springframework.net">
<!--放容器里面的所有的节点 type属性的规范:程序集名称在内的类型全名,程序集名-->
<!--<object type="Spring.Net.Service.UserRegInfoService,Spring.Net.Service" singleton="true" >
<property name="UserRegInfoRepository" ref="UserRegInfoRepository" />
</object>-->
<object type="Spring.Net.Service.BookInfoService,Spring.Net.Service" singleton="true" >
<property name="Book" ref="Book" />
</object>
<!--<object type="Spring.Net.Service.LoginService,Spring.Net.Service" singleton="true" >
<property name="Login" ref="Login" />
</object>-->
<!--配置Service-->
<!--<object name="UserRegInfoRepository" type="Spring.Net.Repository.UserRegInfoRepository,Spring.Net.Repository" singleton="true" >
</object>-->
<object name="Book" type="Spring.Net.Repository.BookInfo,Spring.Net.Repository" singleton="true" >
</object>
<!--<object name="Login" type="Spring.Net.Repository.LoginRepository,Spring.Net.Repository" singleton="true" >
</object>-->
</objects>

5、web层调用

         public ActionResult SpringTest()
{
//ViewBag.Msg = UserRegInfoService.GetAllData();
//ViewBag.Msg = LoginService.LoginInfo();
ViewBag.Msg = BookInfoService.GetBook();
return View();
}

6、效果图如下所示:

在spring.xml中 有几点需要注意:

1、当object属性中的singleton为true时,标识已单例模式访问service类,故函数要写为静态的,如BookService代码所示,否则运行不正常。

2、object和property的name属性值 必须和service类代码里约定的一致,例如:在BookService里约定 对象为static IBookInfo Book { get; set; },那么在<property name="Book" ref="Book" />就必须保持一致,否则运行不正常。

3、spring.xml文件【生成操作属性】要设置为嵌入的资源,否则,配置文件报错。

以上就是本人对spring.net的浅析,如有需更正的地方,请各位多多指点,期待与热爱技术的你共同进步。

Spring.Net 初探之牛刀小试的更多相关文章

  1. Spring.Net 初探

    Spring.Net 初探之牛刀小试   又是一个周末,感受着外面30°的高温,果断宅在家里,闲来无事,就研究了一下spring .net 框架, 在这里不得不说 vs2013确实是一个强大的开发工具 ...

  2. Spring WebSocket初探2 (Spring WebSocket入门教程)<转>

    See more: Spring WebSocket reference整个例子属于WiseMenuFrameWork的一部分,可以将整个项目Clone下来,如果朋友们有需求,我可以整理一个独立的de ...

  3. 响应式Spring Cloud初探

    响应式Spring Cloud初探 分类:工程原文链接:The Road to Reactive Spring Cloud作者:  JOSH LONG译者: helloworldtang日期:JUNE ...

  4. intelij idea+springMVC+spring+mybatis 初探(持续更新)

    intelij idea+springMVC+spring+mybatis 初探(持续更新) intellij 创建java web项目(maven管理的SSH) http://blog.csdn.n ...

  5. spring boot初探

    又被领导鄙视了,说让先把程序跑起来,再去研究深层次的东西.. 我又一次没有学会走就要开始跑了..说干就干 eclipse mars下载 新建maven project 加依赖 <dependen ...

  6. spring MVC 初探 (HelloWorld)

    1.使用spring MVC 需要导入相关jar包 2.web.xml 启用spring MVC <servlet> <servlet-name>spring3mvc</ ...

  7. Spring Boot初探之log4j2配置

    一.背景 下面讲在使用Spring Boot搭建微服务框架时如何配置log4j2,通过log4j2输出系统中日志信息. 二.添加log4j2的配置文件 在项目的src/main/rescources目 ...

  8. Spring Boot初探之数据库访问

    一.背景 Spring boot是集服务发布.数据库管理.日志管理等于一身的服务开发框架:是微服务开发的全能小帮手.这章讲述一下如何使用spring boot访问MySQL数据库. 二.搭建基础环境 ...

  9. Spring Boot初探之restful服务发布

    一.背景 Spring boot是集服务发布.数据库管理.日志管理等于一身的服务开发框架:是微服务开发的全能小帮手.这章讲述一下如何使用spring boot发布restful服务接口. 二.搭建基础 ...

随机推荐

  1. plist文件里的"Bundle versions string, short" 跟 "Bundle version" 的区别及作用

    Bundle versions string, short:用于itunes上显示的版本号,即对外的版本,一般除了版本迭代外,不能随意更改. Bundle version:内部项目管理的版本号,是给程 ...

  2. javascript平时小例子⑦(鼠标跟随的div)

    <!doctype html><html> <head> <meta charset="utf-8"> <title>无 ...

  3. DoModal时带出次级窗口闪现

    最近在做MFC 界面开发. 在一个CDialog窗口DoModal模态显示时, 会将次级窗口带出闪现(比如将一个窗口active, 然后点击我现在程序需要弹框的按钮,弹出弹出正常,但原来active的 ...

  4. elasticsearch-hadoop使用示例

    在elasticsearch-hadoop的具体使用中碰到了几个问题,有必要记录一下,避免下次遇到时又要重新研究. 利用spark读取es数据源的简单示例 import org.elasticsear ...

  5. asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(四)

    有网友问及权限的问题,其实我觉得没什么改进. 主目录下的web.config基本不用改.要说要改的也就只有数据库连接了. <authentication mode="None" ...

  6. Xcode使用HTTP配置

    Xcode7 出现获取网络请求时出现如下异常: App Transport Security has blocked a cleartext HTTP (http://) resource load ...

  7. 浅谈Oracle事务【转载竹沥半夏】

    浅谈Oracle事务[转载竹沥半夏] 所谓事务,他是一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单元.通俗解释就是事务是把很多事情当成一件事情来完成,也就是大家都在一条船上,要 ...

  8. SQL Server 常用日期查询语句

    --本月月初select  dateadd(mm,datediff(mm,0,getdate()),0) --本月月末select  DATEADD(DD,-1,DATEADD(MONTH,1+DAT ...

  9. 机器学习实战(一)kNN

    $k$-近邻算法(kNN)的工作原理:存在一个训练样本集,样本集中的每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对于关系.输入没有标签的新数据后,将新数据的每一个特征与样本集中数据对应的 ...

  10. 可爱的Python_课后习题_CDay−4 可用的首个Python 脚本

    读取文件cdays−4-test.txt 内容,去除空行和注释行后,以行为单位进行排序,并将结果输出为cdays−4-result.txt. cdays−4-test.txt的内容 #some wor ...