转载

Spring基础(1)

Spring概述

1. Spring概述

Spring是开源的轻量级框架

1. Spring核心两部分

(1) AOP:面向切面编程,扩展功能不是修改源代码

(2) IoC:控制反转,对象的创建不是通过new的方式,而是交给Spring配置创建类对象

2. Spring一站式框架

在JavaEE的三层结构中,每一层都提供了不同的解决技术

(1)web层:SpringMVC

(2)service层:Spring的IoC

(3)dao层:Spring的JdbcTemplate

3. Spring版本

Spring4.x

2. Spring入门

1. Spring的IoC操作:

把对象的创建交给Spring进行管理

IoC操作分成两部分:

(1)IoC的配置文件方式

(2)IoC的注解方式

2. Ioc底层原理

(1)IoC底层原理使用的技术

(a)XML配置文件

(b)dom4j解析XML

(c)工厂设计模式

(d)反射

(2)原理图

Spring基础(1)

3. IoC入门

(1)导入Jar包

(a)Spring的最基本功能只要导入4个Jar包:

Beans、Core、Context、SpEL

(b)导入支持日志输出的Jar包

commons-logging-1.2.jar

log4j-1.2.16.jar

(2)创建实体类和方法

(3)创建Spring配置文件,配置创建的实体类

(a)Spring核心配置文件的名称和位置不是固定的,建议放到src下,官方建议applicationContext.xml

(b)引入Schema约束

(c)配置对象创建

<bean id="user" class="全路径名"></bean>

(4)测试对象的创建

实际项目中不需要写测试

(a)根据配置文件创建对象

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

User user = (User)context.getBean("user")// 根据配置文件中Bean的ID

3. Spring的Bean管理(xml文件配置)

在Spring中可以通过配置文件创建对象

1. Bean实例化的三种方式

(1)使用类的无参构造器创建

(2)使用静态工厂创建

创建静态的方法,返回类对象

<bean id="user" class="静态工厂全路径"></bean>

(3)使用实例工厂创建

创建不是静态的方法,返回类对象

2. Bean标签常用属性

(1)id属性:Bean的名称,任意命名,不能包含特殊字符,可以根据ID值得到配置对象

(2)class属性:创建对象所在类的全路径

(3)name属性:功能与ID属性值一样,但是可以包含特殊字符(很少使用)

(4)scope属性:

(a)singleton:默认值,单例的

(b)prototype:多例的(用于配置Struts2中的多实例Action)

(c)request:创建对象放到request域中

(d)session:创建对象放到session域中

(e)globalSession:创建对象放到globalSession域中(用于单点登录)

3. 属性注入

创建对象时,向类的属性中设置值

属性注入的方式:

Spring基础(1)

4. Spring注入属性(有参构造和Set方法)

(1)有参构造

<bean id="demo" class="">

<constructor-arg name="username" value=""></construstor-arg>

</bean>

(2)Set方法

<bean id="demo" class="">

<property name="username" value=""></property>

</bean>

5. Spring注入对象类型属性

创建Service类和Dao类,在Service中得到Dao对象

(1)在Service中把Dao作为类型属性

public class UserDao{

public void add(){}

}

public class UserService{

public void add(){}

}

(2)生成Dao类型属性的Set方法

public class UserService{

private UserDao userDao;

public void setUserDao(UserDao userDao){

this.userDao = userDao;

}

public void add(){}

}

(3)在Spring配置文件中配置

<bean id="userDao" class=""></bean>

<bean id="userService" class="">

// name属性值:service类中的属性名称,ref 属性配置bean中的ID属性

<property name="userDao" ref="userDao">

</bean>

6. P名称空间注入

(1)引入p名称空间

<beans xmlns:p....>

(2)Spring配置文件中配置

<bean id="" class="" p:username="">

7. Spring注入复杂数据

(1)数组 (2)List集合 (3)Map集合 (4)Properties类型

代码:

Spring配置文件:

<bean id="" class="">

//数组

<property name="arrs">

<list>

<value>1</value>

<value>2</value>

<value>3</value>

</list>

</property>

<property name="list">

<list>

<value>1</value>

<value>2</value>

<value>3</value>

</list>

</property>

<property name="map">

<map>

<entry key="1" value="one"></entry>

<entry key="2" value="two"></entry>

<entry key="3" value="three"></entry>

</map>

</property>

<property name="properties">

<props>

<prop key="1">one</prop>

<prop key="2">two</prop>

<prop key="3">three</prop>

</props>

</property>

</bean>

4. IoC和DI区别

(1)Ioc:控制反转,把对象创建交给Spring配置

(2)DI:依赖注入,向类里的属性设置值

(3)关系:DI不能单独存在,需要在IoC的基础上完成操作

5. Spring整合Web项目原理

1. 加载Spring核心配置文件,根据对象创建

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

new一个对象,功能可以实现,但是效率低

2. 实现思想:把加载配置文件和创建对象过程,在服务器启动时完成

3. 实现原理:

(1)ServletContext对象

(2)监听器

(3)使用:

(a) 在服务器使用时,为每个项目创建一个ServletContext对象

(b) 在ServletContext对象创建时,使用监听器可以具体到ServletContext对象什么时候创建

(c) 使用监听器监听到ServletContext对象创建的时候

(a)加载Spring配置文件,在配置文件配置对象创建

(b)把创建出来的对象放到ServletContext域对象里(setAttribute方法)

(c)获取对象的时候,到ServletContext域对象中得到(getAttribute方法)

原文  http://blog.csdn.net/imail2016/article/details/74178221
正文到此结束
Loading...