Spring(一)框架简述与IOC的XML方式用法

1.Spring的概述:


1.1 什么是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)

* 持久层:SpringJDBC模板.ORM模板用于整合其他的持久层框架.

 

Expert One-to-One J2EE Design and Development :J2EE的设计和开发:(2002.EJB)

Expert One-to-One J2EE Development without EJB :J2EE不使用EJB的开发.

1.2 为什么学习Spring:

方便解耦,简化开发

Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理

AOP编程的支持

Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无需手动编程

方便程序的测试

SpringJunit4支持,可以通过注解方便的测试Spring程序

方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:StrutsHibernateMyBatisQuartz等)的直接支持

降低JavaEE API的使用难度

Spring JavaEE开发中非常难用的一些APIJDBCJavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

1.3 Spring的版本:

Spring 3.X Spring4.X

2. Spring的入门案例:(IOC)


2.1 IOC的底层实现原理

 

IOCInversion of Control 控制反转.指的是 对象的创建权反转(交给)Spring.

作用是实现了程序的解耦合.

2.2 步骤一:下载Spring的开发包

官网:http://spring.io/ 

下载地址:http://repo.springsource.org/libs-release-local/org/springframework/spring解压:(Spring目录结构:)

* docs:API和开发规范.

* libs:jar包和源码.

* schema:约束.

2.3 步骤二:创建web项目,引入Spring的开发包:



2.4 步骤三:引入相关配置文件:

log4j.properties

applicationContext.xml

引入约束:

spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html

 

<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>

2.5 步骤四:编写相关的类:

public interface UserDao {

 public void sayHello();

}

 

public class UserDaoImplimplements UserDao {

 @Override

 public void sayHello() {

  System.out.println("Hello Spring...");

 }

}

2.6 步骤五:完成配置:

    <!-- Spring的入门案例================ -->

<bean id="userDao" class="cn.itcast.spring.demo1.UserDaoImpl"></bean>

 

2.7 步骤六:编写测试程序:

@Test

// Spring的方式:

public void demo2(){

 //创建Spring的工厂类:

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

 //通过工厂解析XML获取Bean的实例.

 UserDaouserDao = (UserDao)applicationContext.getBean("userDao");

 userDao.sayHello();

}

2.8 IOCDI:

IOC :控制反转,将对象的创建权交给了Spring.

DI :Dependency Injection 依赖注入.需要有IOC的环境,Spring创建这个类的过程中,Spring将类的依赖的属性设置进去.

 

3. Spring中的工厂:


3.1 ApplicationContext:

ApplicatioContext接口有两个实现类:

 

ClassPathXmlApplicationContext:加载类路径下Spring的配置文件.

FileSystemXmlApplicationContext:加载本地磁盘下Spring的配置文件.

3.2 BeanFactory:

3.3 BeanFactoryApplicationContext的区别:

BeanFactory:是在getBean的时候才会生成类的实例.

ApplicationContext:在加载applicationContext.xml时候就会创建.

4. Spring的相关配置:


4.1 id属性和name属性标签的配置

id:Bean起个名字.在约束中采用ID的约束:唯一.必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号id:不能出现特殊字符.

<bean id=bookAction>

name:Bean起个名字.没有采用ID的约束. name:出现特殊字符.如果<bean>没有id的话, name可以当做id使用.

* 整合struts1的时候:

<bean name=/loginAction >

 

4.2 scope属性:Bean的作用范围.

* singleton:默认值,单例的.

* prototype:多例的.

* request:WEB项目中,Spring创建一个Bean的对象,将对象存入到request域中.

* session:WEB项目中,Spring创建一个Bean的对象,将对象存入到session域中.

* globalSession:WEB项目中,应用在Porlet环境.如果没有Porlet环境那么globalSession相当于session.

 

4.3 Bean的生命周期的配置:

通过配置<bean>标签上的init-method作为Bean的初始化的时候执行的方法,配置destroy-method作为Bean的销毁的时候执行的方法。

销毁方法想要执行,需要是单例创建的Bean而且在工厂关闭的时候,Bean才会被销毁.

5. SpringBean的管理XML的方式:


5.1 SpringBean的属性注入:

【构造方法的方式注入属性】

<!-- 第一种:构造方法的方式-->

<bean id="car" class="cn.itcast.spring.demo4.Car">

 <constructor-arg name="name" value="保时捷"/>

 <constructor-arg name="price" value="1000000"/>

</bean>

 

set方法的方式注入属性】

<!-- 第二种:set方法的方式-->

<bean id="car2" class="cn.itcast.spring.demo4.Car2">

 <property name="name" value="奇瑞QQ"/>

 <property name="price" value="40000"/>

</bean>

5.2 Spring的属性注入:对象类型的注入:

<!-- 注入对象类型的属性-->

<bean id="person" class="cn.itcast.spring.demo4.Person">

 <property name="name" value="会希"/>

 <!--ref属性:引用另一个beanidname -->

 <property name="car2" ref="car2"/>

</bean>

 

5.3 注入复杂类型:

<!-- Spring的复杂类型的注入===================== -->

<bean id="collectionBean" class="cn.itcast.spring.demo5.CollectionBean">

 <!--数组类型的属性-->

 <property name="arrs">

  <list>

   <value></value>

   <value></value>

   <value></value>

  </list>

 </property>

 <!--注入List集合的数据-->

 <property name="list">

  <list>

   <value>1</value>

   <value>2</value>

   <value>3</value>

  </list>

 </property>

 <!--注入Map集合-->

 <property name="map">

  <map>

   <entry key="aaa" value="111"/>

   <entry key="bbb" value="222"/>

   <entry key="ccc" value="333"/>

  </map>

 </property>

 <!-- Properties的注入-->

 <property name="properties">

  <props>

   <prop key="username">root</prop>

   <prop key="password">123</prop>

  </props>

 </property>

</bean>

6. Spring的分配置文件的开发

一种:创建工厂的时候加载多个配置文件:

ApplicationContext applicationContext 

= new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml");

 

二种:在一个配置文件中包含另一个配置文件:

<import resource="applicationContext2.xml"></import>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值