zoukankan      html  css  js  c++  java
  • Spring入门(2)-通过构造器注入Bean

    Spring入门(2)-通过构造器注入Bean

    前一篇文章将了最基本的spring例子,这篇文章中,介绍一下带有参数的构造函数和通过构造器注入对象引用。

    0. 目录

    1. 带有参数的构造函数
    2. 通过构造器注入对象引用
    3. 通过工厂方法创建Bean

    1. 带有参数的构造函数

    把需要实例化的类中增加一个有参数的构造函数

    package com.chzhao.springtest;
    
    public class PersonBll implements IPersonBll {
    
    	private Person person;
    
    	public PersonBll() {
    
    	}
    
    	public PersonBll(String name) {
    		this.person = new Person();
    		this.person.setName(name);
    	}
    
    	public void show() {
    		if (this.person != null) {
    			System.out.println(this.person.getName());
    		} else {
    			System.out.println("no person");
    		}
    	}
    
    	public void addPerson(Person p) {
    		System.out.println("add person: " + p.getName());
    	}
    }
    

    配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    	<bean  name="PersonBll" class="com.chzhao.springtest.PersonBll"> 
    		<constructor-arg value="老王"></constructor-arg>
    	</bean> 
    </beans>
    

    通过这种方式,可以把参数传入到构造函数中。

    2. 通过构造器注入对象引用

    把构造函数改为引用类型,代码如下:

    package com.chzhao.springtest;
    
    public class PersonBll implements IPersonBll {
    
    	private Person person;
    
    	public Person getPerson() {
    		return person;
    	}
    
    	public void setPerson(Person person) {
    		this.person = person;
    	}
    
    	public PersonBll() {
    
    	}
    
    	public PersonBll(Person p) {
    		this.person = p;
    	}
    
    	public void show() {
    		if (this.person != null) {
    			System.out.println(this.person.getName());
    		} else {
    			System.out.println("no person");
    		}
    	}
    
    	public void addPerson(Person p) {
    		System.out.println("add person: " + p.getName());
    	}
    }
    

    同时配置文件改为

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    	<bean name="laowang" class="com.chzhao.springtest.Person">
    		<property name="name" value="老王" />
    	</bean>
    	<bean  name="PersonBll" class="com.chzhao.springtest.PersonBll"> 
    		<constructor-arg ref="laowang"></constructor-arg>
    	</bean> 
    </beans>
    

    3. 通过工厂方法创建Bean

    有时候一些对象是通过工厂方法实例化的,这里介绍一下。

    package com.chzhao.springtest;
    
    public class BllFactory {
    
    	public static PersonBll getPersonBll() {
    		Person p = new Person();
    		p.setName("老李");
    		PersonBll bll = new PersonBll(p);
    		return bll;
    	}
    }
    
    

    对应配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    	<bean  name="PersonBll" class="com.chzhao.springtest.BllFactory" 
         factory-method="getPersonBll"> 
    	</bean> 
    </beans>
    
  • 相关阅读:
    linux下postgresql的c程序编译问题
    Linux下Sublime Text 2中文显示及中文输入问题[转][ubuntu 10.10]
    linux英文斜体乱码 【ubuntu 10.10】
    dropbox无法访问后国内网盘对比选择
    Linux查看系统信息的一些命令及查看已安装软件包的命令(转)
    linux配置ssh 【ubuntu 10.10】
    error: failed to push some refs【Linux】【Git】
    一些曾经收藏的话
    Linux系统源码安装过程中的prefix选项【转】
    LINUX GBK>UTF8文件编码批量转换脚本[转]
  • 原文地址:https://www.cnblogs.com/wardensky/p/4198654.html
Copyright © 2011-2022 走看看