spring基础知识

Spring

(1)Spring是什么?

Spring是一个开源的用来简化应用开发的框架。

(2)Spring的特点?

简化开发

Spring对很多常用的api做了简化(比如,Spring对jdbc就做了很好的 封装,我们利用Springjdbc访问数据库,就不用考虑如何获取连接和关闭 连接)。

解耦

Spring帮我们管理对象之间的依赖关系,这样,便于代码的维护。

集成

Spring可以集成其它的一些框架。集成之后,这些框架的使用会变得 更加的简单。

(3)Spring容器

Spring容器是什么?

Spring框架当中的一个核心模块,用来管理对象。

如何启动Spring容器?

step1. 导包。
step2. 添加配置文件。
step3. 编写启动Spring容器的代码。

如何创建对象?

方式一 无参构造器

step1. 类应用提供无参构造器(或者缺省构造器)。
step2. 在配置文件当中,添加一个bean元素。
step3. 启动Spring容器,调用容器提供的getBean方法获得要创建的 对象。

方式二 静态工厂方法 (了解)
方式三 实例工厂方法 (了解)


代码如下:

配置文件:applicationContext.xml

	<!-- 使用无参构造器创建对象  
	  id属性:bean的名称,要求唯一    class属性: 类的全限定名
	-->
	<bean id="stu1" class="first.Student"></bean>
	
	<bean id="date1" class="java.util.Date"></bean>
	
	<!-- 使用静态工厂方法创建对象  Calendar这个类没有无参构造器
	     factory-method属性:指定一个静态方法
	     spring容器会调用这个静态方法来创建对象
	-->
	<bean id="cal" class="java.util.Calendar" factory-method="getInstance"></bean>
	
	<!-- 使用实例工厂方法创建对象 
	factory-bean属性:指定一个bean的ID,
	factory-method属性:指定一个实例方法(非静态)
	spring容器会调用这个bean的方法来创建关键对象
	-->
	<bean id="time1" factory-bean="cal" factory-method="getTime"></bean>
java代码:

package first;

import java.util.Calendar;
import java.util.Date;

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

public class FirstSpring {
	public static void main(String[] args) {
		//启动容器
		ApplicationContext ac = 
				new ClassPathXmlApplicationContext("applicationContext.xml");
		//System.out.println(ac);
		//获得对象-用第二种
		//Student stu = (Student)ac.getBean("stu1");
		Student stu = ac.getBean("stu1", Student.class);
		System.out.println(stu);
		System.out.println("=======================");
		
		Date date1 = ac.getBean("date1",Date.class);
		System.out.println(date1);
		System.out.println("=======================");
		
		Calendar cal = ac.getBean("cal",Calendar.class);
		System.out.println(cal);
		
		System.out.println("=======================");
		Date time1 = ac.getBean("time1",Date.class);
		System.out.println(time1);
	}
}

实体类Student:

package first;

public class Student {

	public Student() {
		System.out.println("Student()");
	}
	
}

输出结果:
Student()
first.Student@1efea79
=======================
Fri May 26 11:06:34 CST 2017
=======================
java.util.GregorianCalendar[time=1495767994157,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=4,WEEK_OF_YEAR=21,WEEK_OF_MONTH=4,DAY_OF_MONTH=26,DAY_OF_YEAR=146,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=6,SECOND=34,MILLISECOND=157,ZONE_OFFSET=28800000,DST_OFFSET=0]
=======================
Fri May 26 11:06:34 CST 2017

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值