spring学习1

容器创建对象的三种方式

通过类的无参构造创建对象
通过静态工厂的方式创建对象
通过实例工厂来创建对象,此方法首先要把工厂配置到容器中

<?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">
	
	<!-- 把人和猫配置到容器中 -->
	<!-- spring容器管理对象的声明周期:创建、使用(依赖的配置)、销毁 -->
	
	<!-- 通过类的无参构造创建对象 -->
	<bean id="people" class="com.test.bean.People"></bean>
	<bean id="cat" class="com.test.bean.Cat"></bean>
	
	<!-- 通过静态工厂的方式创建对象 -->
	<bean id="ming" class="com.test.factory.PeopleFactory" factory-method="creatPeople"></bean>
	
	<!-- 通过实例工厂来创建对象,此方法首先要把工厂配置到容器中 -->
	<bean id="insFactory" class="com.test.factory.InstanceFactory"></bean>
	<bean id="Tom" class="com.test.bean.People" factory-bean="insFactory" factory-method="getPeople"></bean>
</beans>

依赖注入的方式

1:set注入
2:构造注入

<?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">
	<!-- 依赖注入的方式:1:set注入 2:构造注入 知识点:简化配置 知识点:自动注入 -->
	
	<!-- 1:set注入 -->
	<bean id="person" class="com.test.bean.Person">
		<property name="name" value="小蓝"></property>
		<property name="dog" ref="dog"></property>
		<property name="movies">
			<set value-type="java.lang.String">
				<value>日韩</value>
				<value>中文</value>
			</set>
		</property>
		<property name="size">
			<map>
				<entry key="身高" value="175"></entry>
				<entry key="体重" value="105"></entry>
			</map>
		</property>
		<property name="prop">
			<props>
				<prop key="演员">一个电影</prop>
				<prop key="歌手">一首歌</prop>
			</props>
		</property>
	</bean>
	<bean id="dog" class="com.test.bean.Dog">
		<property name="dname" value="哈士奇"></property>
		<property name="color" value="黑色"></property>
	</bean>
	
	<!-- 2:构造注入,采取构造方法来完成依赖的注入 -->
	<bean id="personCons" class="com.test.bean.Person">
		<constructor-arg name="dog" ref="chai"></constructor-arg>
		<constructor-arg name="hobby">
			<list value-type="java.lang.String">
				<value>拍电影</value>
				<value>看球赛</value>
			</list>
		</constructor-arg>
	</bean>
	<bean id="chai" class="com.test.bean.Dog">
		<constructor-arg name="color" value="黄色"></constructor-arg>
		<constructor-arg name="dname" value="柴犬"></constructor-arg>
	</bean>
</beans>

简化配置
自动注入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:c="http://www.springframework.org/schema/c"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
	
	<!-- 简化set注入、构造注入、特殊结构(数组、集合)注入,提供了三个命名空间p: c: util: -->
	<bean id="ji" class="com.test.bean.Dog" p:dname="吉娃娃" p:color="白色"></bean>
	<bean id="personJH" class="com.test.bean.Person" c:dog-ref="ji" c:hobby-ref="qiu"></bean>
	<util:list value-type="java.lang.String" id="qiu">
		<value>看球</value>
		<value>打球</value>
		<value>踢球</value>
	</util:list>
	
	
	<!-- 依赖注入的自动注入,特指引用类型 -->
	<!-- byName:按照成员变量名和指定类型的bean的id值对应来注入 -->
	<!-- byType:按照成员变量类型和指定类型的bean的类型对应来注入,要唯一 -->
	<bean id="jack" class="com.test.bean.People" autowire="byName">
		<property name="bname" value="jack"></property>
		<property name="age" value="30"></property>
	</bean>
	<bean id="mimi" class="com.test.bean.Cat">
		<constructor-arg name="cname" value="小猫猫"></constructor-arg>
		<constructor-arg name="color" value="粉色"></constructor-arg>
	</bean>
	<bean id="cat" class="com.test.bean.Cat">
		<constructor-arg name="cname" value="小miaomiao"></constructor-arg>
		<constructor-arg name="color" value="灰色"></constructor-arg>
	</bean>
	<alias name="cat" alias="ccc"/>
</beans>

数据库连接池

<?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 id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<property name="url" value="jdbc:mysql://localhost:3306/ssm?useSSL=false&amp;serverTimezone=Hongkong"></property>
		<property name="username" value="root"></property>
		<property name="password" value="123456"></property>
		<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>	
	</bean>
	
</beans>

附:

package com.test.bean;

public class Cat {
	private String cname;
	private String color;
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public Cat() {
		// TODO Auto-generated constructor stub
	}
	public Cat(String cname, String color) {
		super();
		this.cname = cname;
		this.color = color;
	}
	@Override
	public String toString() {
		return "Cat [cname=" + cname + ", color=" + color + "]";
	}
}

package com.test.bean;

public class Dog {
	private String dname;
	private String color;
	public Dog() {
		super();
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public Dog(String dname, String color) {
		super();
		this.dname = dname;
		this.color = color;
	}
	@Override
	public String toString() {
		return "Dog [dname=" + dname + ", color=" + color + "]";
	}
}

package com.test.bean;

/**
 * Spring框架可以管理 任何层次的java对象, 一般用它管理 三层(web层/业务层/持久层)架构里的对象,
 * 我们学习基础配置阶段 使用 普通的封装类来做例子, 整合时 回归三层配置.
 * @author Administrator
 *
 */
public class People {
	private String bname;
	private Integer age;
	private Cat cat; //人类型  关联  猫类型   这里叫做依赖!
	public People() {
	}
	public String getBname() {
		return bname;
	}
	public void setBname(String bname) {
		this.bname = bname;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Cat getCat() {
		return cat;
	}
	public void setCat(Cat cat) {
		this.cat = cat;
	}
	public People(String bname, Integer age) {
		super();
		this.bname = bname;
		this.age = age;
	}

	public People(String bname, Integer age, Cat cat) {
		super();
		this.bname = bname;
		this.age = age;
		this.cat = cat;
	}
	@Override
	public String toString() {
		return "People [bname=" + bname + ", age=" + age + ", cat=" + cat + "]";
	}
}

package com.test.bean;

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

public class Person {
	private String name;
	private Integer age;
	private Dog dog;
	private String[] srr;
	private List<String> hobby;
	private Set<String> movies;
	private Map<String,Integer> size;
	private Properties prop;//kv都是String
	public Person() {
		super();
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Dog getDog() {
		return dog;
	}
	public void setDog(Dog dog) {
		this.dog = dog;
	}
	public String[] getSrr() {
		return srr;
	}
	public void setSrr(String[] srr) {
		this.srr = srr;
	}
	public List<String> getHobby() {
		return hobby;
	}
	public void setHobby(List<String> hobby) {
		this.hobby = hobby;
	}
	public Set<String> getMovies() {
		return movies;
	}
	public void setMovies(Set<String> movies) {
		this.movies = movies;
	}
	public Map<String, Integer> getSize() {
		return size;
	}
	public void setSize(Map<String, Integer> size) {
		this.size = size;
	}
	public Properties getProp() {
		return prop;
	}
	public void setProp(Properties prop) {
		this.prop = prop;
	}
	public Person(String name, Integer age, Dog dog) {
		super();
		this.name = name;
		this.age = age;
		this.dog = dog;
	}
	public Person(Dog dog, List<String> hobby) {
		super();
		this.dog = dog;
		this.hobby = hobby;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", dog=" + dog + ", srr=" + Arrays.toString(srr) + ", hobby="
				+ hobby + ", movies=" + movies + ", size=" + size + ", prop=" + prop + "]";
	}
}

package com.test.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.bean.People;

public class SpringTest {

	
	@Test
	public void test1() throws Exception {
		ApplicationContext ac = new ClassPathXmlApplicationContext("SpringConfig.xml");
		People p = ac.getBean("people", People.class);
		System.out.println(p);
	}
}

package com.test.factory;

import com.test.bean.People;

public class InstanceFactory {
	public People getPeople() {
		People b = new People("Tom",25);
		return b;
	}
}

package com.test.factory;

import com.test.bean.People;

public class PeopleFactory {
	public static People creatPeople() {
		People b = new People();
		b.setBname("小明");
		return b;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值