文档章节

Spring day01(2)

萧小蚁
 萧小蚁
发布于 2015/06/15 18:41
字数 1577
阅读 10
收藏 0
package model;

public class User {

	private int id;
	private String name;
	
	public User(int id,String name){
		this.id=id;
		this.name=name;
	}
	
	public User(){
		
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + "]";
	}
	
	public void init(){
		System.out.println("----->初始化");
	}
	public void destory(){
		System.out.println("----->销毁");
	}
}

package model;

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

public class User02 {

	private List<String> list;
	private Set<String> set;
	private Map<String,String> map;
	
	public List<String> getList() {
		return list;
	}
	public void setList(List<String> list) {
		this.list = list;
	}
	public Set<String> getSet() {
		return set;
	}
	public void setSet(Set<String> set) {
		this.set = set;
	}
	public Map<String, String> getMap() {
		return map;
	}
	public void setMap(Map<String, String> map) {
		this.map = map;
	}
	@Override
	public String toString() {
		return "User02 [list=" + list + ", set=" + set + ", map=" + map + "]";
	}
	
}

package model;

public class Parent {

	private int id;
	private String name;
	
	public Parent(){
		
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Parent [id=" + id + ", name=" + name + "]";
	}
	
	
}

package model;

public class Child extends Parent{

	private String address;
	public Child(){
		
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "Child [address=" + address +",name"+super.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" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">

	<bean id="user01" class="model.User" scope="singleton">
		<!-- 通过构造方法注入依赖信息 -->
		<constructor-arg name="id" value="1001"></constructor-arg>
		<constructor-arg name="name" value="zhangsan"></constructor-arg>
	</bean>
	
	<bean id="user0101" class="model.User" scope="prototype">
		<!-- 通过构造方法注入依赖信息 -->
		<constructor-arg name="id" value="1001"></constructor-arg>
		<constructor-arg name="name" value="zhangsan"></constructor-arg>
	</bean>
	
	<bean id="user0102" class="model.User" init-method="init">
		<!-- 通过构造方法注入依赖信息 -->
		<constructor-arg name="id" value="1001"></constructor-arg>
		<constructor-arg name="name" value="zhangsan"></constructor-arg>
	</bean>
	
	<bean id="user02" class="model.User">
		<!-- 通过set方法注入依赖信息 -->
		<property name="id" value="1002"></property>
		<property name="name" value="lisi"></property>
	</bean>
	
	<bean id="user03" class="model.User02">
		<property name="list">
			<list>
				<value>tianqi</value>
				<value>liuliu</value>
			</list>
		</property>
		
		<property name="set">
			<set>
				<value>wangwu</value>
				<value>zhaoliu</value>
			</set>
		</property>
		
		<property name="map">
			<map>
				<entry>
					<key><value>a</value></key>
					<value>apple</value>
				</entry>
			</map>
		</property>
		
	</bean>
	
	<bean id="parent" class="model.Parent">
		<property name="id" value="1001"></property>
		<property name="name" value="zhangsan"></property>
	</bean>
	
	<bean id="child" class="model.Child" parent="parent">
		<property name="address" value="beijing"></property>
	</bean>
	
	
</beans>

package test;

import model.Child;
import model.Parent;
import model.User;
import model.User02;

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


public class TestUserService {

	@Test
	public void testUser01(){
		ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
		User user=context.getBean("user01", User.class);
		System.out.println(user);
	}
	
	@Test
	public void testUser02(){
		ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
		User user=context.getBean("user02", User.class);
		System.out.println(user);	
	} 
	
	@Test
	public void testUser03(){
		ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
		User02 user=context.getBean("user03", User02.class);
		System.out.println(user);
	}
	
	@Test
	public void testUser04(){
		ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
		User user=context.getBean("user01", User.class);
		System.out.println("------>"+user.hashCode());
		
		User user2=context.getBean("user01", User.class);
		System.out.println(user2.hashCode());
	}
	
	@Test
	public void testUser05(){
		ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
		User user=context.getBean("user0101", User.class);
		System.out.println("------>"+user.hashCode());
		
		User user2=context.getBean("user0101", User.class);
		System.out.println(user2.hashCode());
	}
	
	@Test
	public void testUser06(){
		ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
		User user=context.getBean("user0102", User.class);
		System.out.println("------>"+user.hashCode());
		
		User user2=context.getBean("user0102", User.class);
		System.out.println(user2.hashCode());
	}
	
	@Test
	public void testUser07(){
		ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
		Child c=context.getBean("child", Child.class);
		System.out.println(c);
	}
	
	
}

二、Spring应用的环境搭建

1. 添加spring框架的包到classpath:

2. 添加spring的配置文件到classpath: 

<?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:context="http://www.springframework.org/schema/context"

    xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">

  ...

</beans>

3. 给Eclipse添加xsd的支持:

windows-->preferences->myeclipse-->files and editors--> xml-->xmlcatalog

点击“add”,在location中选“File system”,然后在Spring解压目录的dist/resources目录中选择spring-beans-3.1.xsd,把key type改为Schema location,key改为http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

  



三、Spring应用的开发步骤

1. 在spring的配置文件中注册要由Spring IoC容器管理的Bean:不仅管理Bean的生命周期,还管理Bean之间的依赖关系。

2. bean的配置:

<bean id="bean的唯一标识名" class="Bean类的全限定名"/>

3. bean的依赖关系配置:(后面有详细介绍)

4. 从spring容器中获取指定的Bean:

//创建出spring的应用上下文实例

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

//获取指定的Bean实例

Object obj = context.getBean("标识名", 类型信息对象);


四、Spring中的两种容器

1. BeanFactory:Bean工厂(最简单的容器)。创建和分发Bean对象,创建协作对象间的关系,参与管理Bean的生命周期。

   常用实现类:XmlBeanFactory

2. ApplicationContext:Spring应用上下文。

建立在BeanFactory基础之上,还提供了文本信息解析工具(对国际化的支持),载入文件资源的通用方法,还可以向注册为监听器的Bean发送事件。

★1) ClassPathXmlApplicationContext – 从类路径中的XML文件载入上下文定义信息。

 2) FileSystemXmlApplicationContext – 从指定的文件系统路径中的XML文件载入上下文定义信息。

 3) XmlWebApplicationContext  – 从web系统中的XML文件中载入上下文定义信息。

3. 从ApplicationContext中获取Bean实例的方法:

 1) Xxx xxx = context.getBean("标识名或别名", 类型信息对象);

 2) Xxx xxx = (Xxx)context.getBean("标识名或别名");

 3) 要求Bean的标识名与类名相同:UserService userService = context.getBean(UserService.class);

 

 五、Bean的装配:

 1. 基本形式:(spring3以下版本id属性值不能出现特殊字符),name用于取别名。

 <bean id="唯一标识名" class="类的全限定名"/>

 2. 注入依赖的常用方式

  1) 构造器注入:<constructor-arg index="参数的位置索引值" [value="注入值" | ref="注入引用"] />

 ★2) setter注入:建议使用。必须要有无参的构造方法,必须为需要注入的属性提供setter方法。

     <property name="属性名" value="注入值"/>

<property name="属性名" ref="注入引用"/>


 ★3. 指定Bean的生存范围:默认情况,Spring容器中管理的是Bean实例是单例的。

  1) scope="singleton":默认值

  2) scope="prototype":从Spring容器中获取一次就创建一个实例

  3) request:在HTTP请求范围内。只有在使用具有Web能力的Spring容器时才有效

  4) session:HTTP Session范围。同上。

  

 4. 指定Bean的初始化和销毁方法: 通过init-method,destroy-method属性来指定对应的方法。

 

★5. 装配Bean的继承: 通过parent属性来完成。还可能通过abstract="true"来指定为抽象的。

 

 6. 小心使用自动装配:通过auto-wire属性来完成:可选值:byName, byType, autodetect, default

 

 7. 自动装配也可以配置在spring配置文件的根元素上:<beans ... default-autowire="byName">

          可以配置spring对Bean的初始化进行延迟:<beans ... default-lazy-init="true">


© 著作权归作者所有

共有 人打赏支持
萧小蚁

萧小蚁

粉丝 98
博文 279
码字总数 192339
作品 0
海淀
程序员
springmvc搭建-搭建笔记

1、环境搭建 创建springmvc-day01这么一个web应用; 导入springioc,springweb , springmvc相关的jar包 http://down.51cto.com/data/2445976 jar下载 2、jar包准备 3、web.xml配置 4、Dispatc...

知止内明
04/21
0
0
Java之品优购部署_day01(10)

4.3 连接 Redis-Cluster4.3.1 客户端工具连接 Redis-cli 连接集群: file:///C:UsersuserAppDataLocalTempksohtmlwpsD57E.tmp.png -c:代表连接的是 redis 集群 测试值的存取: (1)从本地连...

我是小谷粒
07/11
0
0
day33_Spring学习笔记_01

零、蓦然回首 Struts2:web层,比较简单(难点:ValueStack值栈、拦截器) Hibernate:dao层,知识点杂(学了不用,默认设置够用了) Spring:service层,重要,(讲多少用多少) Spring课程...

黑泽明军
07/22
0
0
Spring 课程笔记day01

课程体系 1、Spring的IOC(控制反转)和DI(依赖注入) 2、SpringDI的高级(注解形式) 3、Spring的AOP(面向切面编程) 4、Spring和JDBC的整合 5、Spring的声明式的事物处理 2. Spring简介 Spri...

architect刘源源
01/14
0
0
Spring 课程笔记day01

Spring 课程笔记day01 1. 课程体系 1、Spring的IOC(控制反转)和DI(依赖注入) 2、SpringDI的高级(注解形式) 3、Spring的AOP(面向切面编程) 4、Spring和JDBC的整合 5、Spring的声明式的事物...

architect刘源源
01/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

困扰当前数据中心管理的三大难题

导读 当企业发展到一定程度,或者之前的机房不能满足现在的数据中心使用时,企业会对数据中心进行迁移。那么在数据中心进行迁移的时候会遇到哪些风险呢?针对这些风险我们应该做出怎样的措施来...

问题终结者
4分钟前
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
20分钟前
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
28分钟前
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
35分钟前
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
43分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部