spring学习第一天spring的依赖注入

25 篇文章 0 订阅

目录

* spring的依赖注入

1.构造依赖注入

2.使用set方法注入

3.复杂类型的注入


可参考:https://baijiahao.baidu.com/s?id=1612405553596190826&wfr=spider&for=pc    

* spring的依赖注入

     *    注入的方式有三种
     *         第一种:使用构造函数注入
     *         第二种:使用set方法注入
     *         第三种:使用注解注入
     *     注入的数据类型有三类:
     *         第一类:基本类型和string类型
     *         第二类:其他bean类型(必须是在spring的配置文件中出现过的bean)
     *         第三类:复杂类型(集合类型)
     * 
     */

推荐使用set注入。不会更改构造函数,

1.构造依赖注入

<!-- 构造依赖注入 :
    涉及的标签 : contrustor-arg
    标签的属性:
        type:指定参数的类型。
        index:指定参数的索引位置从0开始
        name:指定参数的名称
        +++++++++上面三个参数是指定给哪个参数赋值的,下面两个参数是指定赋什么值的+++++++++++++++++++++++++++++
        value:指定基本数据类型或String类型的数据
        ref:指定其他bean
        类型的数据 
    标签出现的位置:
        写在bean标签的内部
-->

cn.pro.service.CustormerService

package cn.pro.service;



//客户的业务实现接口
public interface CustormerService {
	void saveCustormer();
}

cn.pro.service.impl.CustormerServiceimpl

package cn.pro.service.impl;

import java.util.Date;

import cn.pro.service.CustormerService;


//客户的业务层实现层
public class CustormerServiceimpl implements CustormerService{
	private String driver;
	private Integer port;
	private Date today;
	//以上三个类成员,没有什么特别的意义,只是为了演示依赖注入
	public CustormerServiceimpl(String driver, Integer port, Date today) {
		super();
		this.driver = driver;
		this.port = port;
		this.today = today;
	}	
	
	
	
	
	public void saveCustormer() {
		// TODO Auto-generated method stub
		System.out.println("业务层调用持久层" + driver + "," + port + "," + today + ".");
		//custormerdao.SaveCustormer();
	}


}

bean.xml

<?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 definitions here -->
<!-- <bean id="custormerService" class="cn.pro.service.impl.CustormerServiceimpl"></bean>   -->
<!-- 构造依赖注入 :
	涉及的标签 : contrustor-arg
	标签的属性:
		type:指定参数的类型。
		index:指定参数的索引位置从0开始
		name:指定参数的名称
		+++++++++上面三个参数是指定给哪个参数赋值的,下面两个参数是指定赋什么值的+++++++++++++++++++++++++++++
		value:指定基本数据类型或String类型的数据
		ref:指定其他bean
		类型的数据 
	标签出现的位置:
		写在bean标签的内部
-->



<bean id="custormerService" class="cn.pro.service.impl.CustormerServiceimpl">
<constructor-arg name="driver" value="com.mysql.jdbc.driver"></constructor-arg>
<constructor-arg name="port" value="3306"></constructor-arg>
<constructor-arg name="today" ref="now"></constructor-arg>

</bean>
<bean id="now" class="java.util.Date"></bean>

</beans>

cn.pro.Ui.Client

package cn.pro.Ui;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import cn.pro.service.CustormerService;

public class Client {

	/**spring的入门案例 
	 * @param args
	 * spring的依赖注入
	 *	注入的方式有三种
	 * 		第一种:使用构造函数注入
	 * 		第二种:使用set方法注入
	 * 		第三种:使用注解注入
	 * 	注入的数据类型有三类:
	 * 		第一类:基本类型和string类型
	 * 		第二类:其他bean类型(必须是在spring的配置文件中出现过的bean)
	 * 		第三类:复杂类型(集合类型)
	 * 
	 */
	
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//1.获取容器
		ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
		
		//2.根据容器id获取对象
		CustormerService cs = (CustormerService) ac.getBean("custormerService");
		
		cs.saveCustormer();
		
		
	}

}

执行

业务层调用持久层com.mysql.jdbc.driver,3306,Mon Feb 25 15:23:54 CST 2019.

2.使用set方法注入

cn.pro.service.impl.CustormerServiceimpl2

package cn.pro.service.impl;

import java.util.Date;

import cn.pro.service.CustormerService;


//客户的业务层实现层
public class CustormerServiceimpl2 implements CustormerService{
	private String driver;
	private Integer port;
	private Date today;
	//以上三个类成员,没有什么特别的意义,只是为了演示依赖注入
	
	public void setDriver(String driver) {
		this.driver = driver;
	}
	public void setPort(Integer port) {
		this.port = port;
	}
	public void setToday(Date today) {
		this.today = today;
	}
	
	
	
	public void saveCustormer() {
		// TODO Auto-generated method stub
		System.out.println("业务层调用持久层" + driver + "," + port + "," + today + ".");
		//custormerdao.SaveCustormer();
	}








}

bean.xml

<?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 definitions here -->

<!-- set方法注入
涉及的标签:property
	标签的属性:
	 name:指定参数的名称
	 +++++++++上面三个参数是指定给哪个参数赋值的,下面两个参数是指定赋什么值的+++++++++++++++++++++++++++++
	 value:指定基本数据类型或String类型的数据
	 ref:指定其他bean
	标签出现的位置:
		写在bean标签的内部
 -->
<bean id="custormerservice2" class="cn.pro.service.impl.CustormerServiceimpl2">
<property name="driver" value="com.mysql.jdbc.driver"></property>
<property name="port" value="3306"></property>
<property name="today" ref="now"></property>
</bean>
<bean id="now" class="java.util.Date"></bean>
</beans>

cn.pro.Ui.Client

package cn.pro.Ui;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import cn.pro.service.CustormerService;

public class Client {

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//1.获取容器
		ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
		
		//2.根据容器id获取对象
		CustormerService cs = (CustormerService) ac.getBean("custormerservice2");
		
		cs.saveCustormer();
		
		
	}
}

执行结果

业务层调用持久层com.mysql.jdbc.driver,3306,Mon Feb 25 16:01:37 CST 2019.

3.复杂类型的注入

cn.pro.service.impl.CustormerServiceimpl3

package cn.pro.service.impl;

import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import cn.pro.service.CustormerService;


//客户的业务层实现层
public class CustormerServiceimpl3 implements CustormerService{
	private String Mystr[];
	private List<String> Mylist;
	private Set<String> Myset;
	private Map<String, String> Mymap;
	private Properties Myp;
	
	public String[] getMystr() {
		return Mystr;
	}

	public void setMystr(String[] mystr) {
		Mystr = mystr;
	}

	public List<String> getMylist() {
		return Mylist;
	}

	public void setMylist(List<String> mylist) {
		Mylist = mylist;
	}

	public Set<String> getMyset() {
		return Myset;
	}

	public void setMyset(Set<String> myset) {
		Myset = myset;
	}

	public Map<String, String> getMymap() {
		return Mymap;
	}

	public void setMymap(Map<String, String> mymap) {
		Mymap = mymap;
	}

	public Properties getMyp() {
		return Myp;
	}

	public void setMyp(Properties myp) {
		Myp = myp;
	}

	public void saveCustormer() {
		//打印数组第一个字符的内存地址
		System.out.println(Mystr);
		System.out.println(Arrays.toString(Mystr));
		System.out.println(Mylist);
		System.out.println(Myset);
		System.out.println(Mymap);
		System.out.println(Myp);
	}








}

bean.xml

<?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 definitions here -->
<!-- set方法注入
涉及的标签:property
	标签的属性:
	 name:指定参数的名称
	 +++++++++上面三个参数是指定给哪个参数赋值的,下面两个参数是指定赋什么值的+++++++++++++++++++++++++++++
	 value:指定基本数据类型或String类型的数据
	 ref:指定其他bean
	标签出现的位置:
		写在bean标签的内部
 -->
<bean id="custormerservice2" class="cn.pro.service.impl.CustormerServiceimpl2">
<property name="driver" value="com.mysql.jdbc.driver"></property>
<property name="port" value="3306"></property>
<property name="today" ref="now"></property>
</bean>
<bean id="now" class="java.util.Date"></bean>

<!-- 复杂类型的注入
结构相同,内容可以互换
 -->

<bean id="custormerservice3" class="cn.pro.service.impl.CustormerServiceimpl3">
	<property name="Mystr">
		<array>
			<value>AAA</value>
			<value>BBB</value>
			<value>CCC</value>
		</array>
	</property>
	<property name="mylist">
	<list>
		<value>111</value>
		<value>222</value>
		<value>333</value>
	</list>
	</property>
	<property name="myset">
	<set>
		<value>aa</value>
		<value>bb</value>
		<value>cc</value>
		<value>dd</value>
	</set>
	
	</property>
	<property name="mymap">
	<map>
	<entry key="aa" value="11"></entry>
	<entry key="bb" value="22"></entry>
	<entry key="cc" value="33"></entry>
	</map>
	</property>
	
	<property name="myp">
	<props>
	<prop key="p1">11</prop>
	<prop key="p2">12</prop>
	</props>
	</property>
</bean>








</beans>

cn.pro.Ui.Client

package cn.pro.Ui;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import cn.pro.service.CustormerService;

public class Client {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//1.获取容器
		ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
		
		//2.根据容器id获取对象
		CustormerService cs = (CustormerService) ac.getBean("custormerservice3");
		
		cs.saveCustormer();
		
		
	}
}

运行:

[Ljava.lang.String;@18ce14a
[AAA, BBB, CCC]
[111, 222, 333]
[aa, bb, cc, dd]
{aa=11, bb=22, cc=33}
{p2=12, p1=11}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值