Spring入门

Spring框架

Spring是于2003 年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以 从Spring中受益。

Spring的核心是控制反转(IOC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

EE开发分成三层结构
	 WEB层:Spring MVC
	 业务层:Bean管理:(IOC)
	 持久层:Spring的JDBC模板.ORM模板用于整合其他的持久层框架

Spring的框架的特点:
方便解耦,简化开发;AOP编程的支持;声明式事务的支持;方便程序的测试;方便集成各种优秀框架;降低JavaEE API的使用难度

IOC功能:
全称Inverse of Control,控制反转,将对象的创建权反转给Spring。使用IOC可以解决的程序耦合性高的问题

入门案例:
1.新建maven工程,在pom.xml文件中添加Spring框架的坐标

<dependencies>
	        <dependency>
	            <groupId>org.springframework</groupId>
	            <artifactId>spring-context</artifactId>
	            <version>5.0.2.RELEASE</version>
	        </dependency>
</dependencies>

2.在resources目录下创建applicationContext.xml的配置文件,名称是可以任意的,但是一般都会使用默认名称。引入spring的约束

<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">
</beans>

3.完成接口的配置,这里举个栗子:

<bean id="userService" class="org.westos.demo1.UserServiceImpl"/>

4.编写测试程序,采用Spring框架的工厂方式来获取到UserService接口的具体实现类

方式一:使用spring的工厂

public void demo2(){
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		// 通过配置的id名从工厂获得对象:
		UserService userService = (UserService) applicationContext.getBean("userService");
		userService.sayHello();
	}

方式二:获取bean对象:

UserService userService1 = context.getBean("userService", UserService.class);

ApplicationContext接口
使用ApplicationContext工厂的接口,使用该接口可以获取到具体的Bean对象
该接口下具体的实现类

  • ClassPathXmlApplicationContext:加载src类路径下的Spring配置文件
  • FileSystemXmlApplicationContext:加载本地磁盘下的Spring配置文件
  • AnnotationConfigApplicationContext:读取注解创建容器的

BeanFactory工厂
BeanFactory工厂是Spring框架早期的创建Bean对象的工厂接口

BeanFactory和ApplicationContext的区别
(1)BeanFactory采取延迟加载,第一次getBean时才会初始化Bean
(2)在加载applicationContext.xml时候就会创建具体的Bean对象的实例,还提供了一些其他的功能。如事件传递,Bean自动装配等。

Spring 创建Bean对象的三种方式
方式一:
使用默认空参构造函数创建。在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时。采用的就是默认空参构造函数创建bean对象,此时如果类中没有默认构造函数,则对象无法创建。
eg:

<bean class="org.westos.service.UserServiceImpl" id="userService"></bean>

方式二:
使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,并存入spring容器)

<bean id="instanceFactory" class="org.westos.factory.InstanceFactory"></bean>
<bean id="accountService" factory-bean="instanceFactory" factory-method="getAccountService">

方式三:
使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象,并存入spring容器)

<bean id="accountService" class="org.westos.factory.StaticFactory" factory-method="getAccountService"></bean>

bean标签的配置:
1.id属性name属性

  • id:给Bean起个名字,在约束中采用ID的约束,唯一
    取值要求:必须以字母开始,可以使用字母、数字、连字符、下划线、句号、冒号,但不能出现特殊字符
  • name:给Bean起个名字,没有采用ID的约束
    取值要求:name:出现特殊字符。如果没有id的话 , name可以当做id使用

2.class属性
Bean对象的全路径

3.scope属性
scope属性代表Bean的作用范围(常用的有前两个)

  • singleton:单例(默认值)
  • prototype:多例,在Spring框架整合Struts2框架的时候,Action类也需要交给 Spring做管理,配置把Action类配置成多例!!
  • request:应用在Web项目中,每次HTTP请求都会创建一个新的Bean 放到request 域中,- - request销毁了,对象也就没了
  • session:应用在Web项目中,同一个HTTP Session 共享一个Bean Session销毁了, 里面的对象也就没了
  • globalsession:应用在Web项目中,多服务器间的session

依赖注入(DI)
IOC和DI的概念

  • IOC:Inverse of Control,控制反转,将对象的创建权反转给Spring
  • DI:Dependency Injection,依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中

DI(依赖注入)
eg:如果UserServiceImpl的实现类中有一个属性,那么使用Spring框架的IOC功能时,可以通过依赖注入把该属性的值传入进来
具体的配置如下:

public class UserServiceImpl implements UserService {
		 private String name; //提供属性
		public void setName(String name) { //提供set方法
			this.name = name;
		 }
}
<bean id="us" class="org.westos.demo1.UserServiceImpl">
	<property name="uname" value="小风"/>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值