Spring.Net 简单实例-02(属性注入)

说明:接续Spring.Net 简单实例-01(IOC)

话不多说看操作

1:为UserInfo添加属性

2: 修改App.config中代码

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
  </configSections>
  <spring>
    <context>
      <resource uri="config://spring/objects"/>
    </context>
    <objects xmlns="http://www.springframework.net">
      <description>An  example that demonstrates simple IoC features.</description>
      <!--//type属性值必须是包含程序集名称在内的类型全名    "命名空间,程序集"-->
      <object name="UserInfoService"  type="YK.OA.SpringNet.UserInfoService, YK.OA.SpringNet">
        <!-- using setter injection... -->
        <!--//name代表属性名:UserName-->
        <property name="UserName" value="逍遥小天狼"/>
        </object>
    </objects>
  </spring>
</configuration>

App.config

3:进一步了解

添加一个Person类

4:同时修改UserInfoService类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace YK.OA.SpringNet
{
   public class UserInfoService:IUserInfoService
    {
       //1添加属性
       public string UserName { get; set; }
       //2再次添加一个属性
       public Person Person { set; get; }
        public string ShowMsg()
        {
            //此时没有给属性赋值,通过ioc容器实例化时赋值
            return "Hello World:" + UserName+",年龄: "+Person.Age;
        }
    }
}

UserInfoService

5:再次修改App.config文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
  </configSections>
  <spring>
    <context>
      <resource uri="config://spring/objects"/>
    </context>
    <objects xmlns="http://www.springframework.net">
      <description>An  example that demonstrates simple IoC features.</description>
      <!--//type属性值必须是包含程序集名称在内的类型全名    "命名空间,程序集"-->
      <object name="UserInfoService"  type="YK.OA.SpringNet.UserInfoService, YK.OA.SpringNet">
        <!-- using setter injection... -->
        <!--//name代表属性名:UserName-->
        <property name="UserName" value="逍遥小天狼"/>
        <!--通过ref对Person属性进行关联-->
        <!--name="表示UserInfo属性"  ref表示关联的object名称-->
        <property name="Person"  ref="Person"/>
      </object>
      <!--Person也是类,所以先object-->
      <object name="Person"  type="YK.OA.SpringNet.Person, YK.OA.SpringNet">
        <property name="Age" value="24"/>
      </object>
    </objects>
  </spring>
</configuration>

App.config

6运行结果

7:文件分离:当类文件过多后App.config文件过于臃肿

添加Xml文件实现代码分离,并将属性设置为"如果更新则复制"(很重要否则配置文件找不到xml文件)

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
  <description>An  example that demonstrates simple IoC features.</description>
  <!--//type属性值必须是包含程序集名称在内的类型全名    "命名空间,程序集"-->
  <object name="UserInfoService"  type="YK.OA.SpringNet.UserInfoService, YK.OA.SpringNet">
    <!-- using setter injection... -->
    <!--//name代表属性名:UserName-->
    <property name="UserName" value="逍遥小天狼"/>
    <!--通过ref对Person属性进行关联-->
    <!--name="表示UserInfo属性"  ref表示关联的object名称-->
    <property name="Person"  ref="Person"/>
  </object>
  <!--Person也是类,所以先object-->
  <object name="Person"  type="YK.OA.SpringNet.Person, YK.OA.SpringNet">
    <property name="Age" value="24"/>
  </object>
</objects>

services.xml

app.config可简化

一定 要在<context>到加入<resource uri="file://services.xml"/>

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
  </configSections>
  <spring>
    <context>
      <resource uri="config://spring/objects"/>
      <!--//添加引用-->
      <resource uri="file://services.xml"/>
    </context>
    <objects xmlns="http://www.springframework.net">
      <!--<description>An  example that demonstrates simple IoC features.</description>
      --><!--//type属性值必须是包含程序集名称在内的类型全名    "命名空间,程序集"--><!--
      <object name="UserInfoService"  type="YK.OA.SpringNet.UserInfoService, YK.OA.SpringNet">
        --><!-- using setter injection... --><!--
        --><!--//name代表属性名:UserName--><!--
        <property name="UserName" value="逍遥小天狼"/>
        --><!--通过ref对Person属性进行关联--><!--
        --><!--name="表示UserInfo属性"  ref表示关联的object名称--><!--
        <property name="Person"  ref="Person"/>
      </object>
      --><!--Person也是类,所以先object--><!--
      <object name="Person"  type="YK.OA.SpringNet.Person, YK.OA.SpringNet">
        <property name="Age" value="24"/>
      </object>-->
    </objects>
  </spring>
</configuration>

App.config

运行 OK

时间: 2024-10-12 13:45:28

Spring.Net 简单实例-02(属性注入)的相关文章

Spring(二) Spring中的AOP和属性注入

一.AOP(Aspect Oriented Programing)面向切面编程 AOP的终极目标:让我们可以专心做事 下面通过一个例子来介绍AOP的具体使用 案例的要求:使用AOP实现日志记录系统 ,  核心模块  和    增强  单独  开发  ,运行时再组装 首先定义接口和方法 接口和实现类中的代码,我放在一起了,应该比较简单 package demo04.dao; /** * Created by mycom on 2018/3/5. */ public interface IHello

ZK Spring 整合View/Controller层属性注入

问题场景 ZK实例化的View/Controller不同于Spring MVC实例化的Controller,不受Spring管理,无法进行注入. 解决方案 方法一 在doAfterCompose方法中调用SpringUtil提供的获取bean的方法,给bean赋值,代码如下: userService = (UserService) SpringUtil.getBean("userService"); 方法二 在doAfterCompose方法中调用Spring的自动注入方法进行所有be

Spring:特殊数据类型的属性注入(基于配置文件)

该处提到的特殊数据类型指的是除了基础数据类型和String以外的其他常用的数据类型,如:List.Map.Set.以及pojo对象等.则我们创建的Person类定义为: package bjtu.wellhold.testSpring; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import org

Spring.Net 简单实例-01(IOC)

1.话不多说看操作.新建"Windows窗体应用程序" 2:通过配置文件创建IOC容器 首先引入安装包 3:定义一个接口(更好的体现封装性,当然也可以直接使用类) 定义一个类,实现接口 4:配置App.config文件 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name=&q

Spring boot 工具类静态属性注入及多环境配置

由于需要访问MongoDB,但是本地开发环境不能直接连接MongoDB,需要通过SecureCRT使用127.0.0.2本地IP代理.但是程序部署到线上生产环境后,是可以直接访问MongoDB的,因此开发好程序后,总是要修改一下MongoDB服务器的IP才能提交代码,这样很是不方便. private static final String PUBCHAT_HOST = "127.0.0.2"; // private static final String PUBCHAT_HOST =

16.spring+hibernate简单实例

1.概念 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. hibernate对象: ① configuration (Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象) ②sessionFactory(一个

Spring.Net学习笔记(4)-属性及构造器注入

一.开发环境 操作系统:Win10 编译器:VS2013 .Net版本:.net framework4.5 二.涉及程序集 Spring.Core.dll:1.3.1 Common.Logging.dll 三.开发过程 1.项目结构 2.编写Product.cs namespace SpringNetDi { public class Product { public string Name { get; set; } public decimal UnitPrice { get; set; }

【初识Spring】对象(Bean)实例化及属性注入(xml方式)

title: [初识Spring]对象(Bean)实例化及属性注入(xml方式) date: 2018-08-29 17:35:15 tags: [Java,Web,Spring] --- ?#初识Spring之Bean实例化及属性注入 1.通过xml配置的方式进行实例化. 配置文件中bean标签的常用属性 通过无参构造(常用) 使用静态工厂进行创建 使用实例工厂进行创建 2.属性注入. 使用有参数构造方法注入属性 使用set方法注入属性(常用) 注入对象类型属性 注入复杂类型属性 xml配置的

spring.net的简单使用(四)对象属性注入

创建了对象,如果是简单对象就到此为止,如果是复杂对象,则需要为它的属性赋值. 属性赋值有两种方法:属性注入和构造器注入. 一.属性注入 在object节点下使用property就是属性注入,如下: <object name="person" type="LINQDemo.person,LINQDemo"> <property name="name" value="ren"></property&g