您的位置:首页 > 编程语言 > Java开发

spring简单入门

2017-02-16 22:12 183 查看

Spring入门

概述

Spring是一个开源的框架,2003年兴起的轻量级,一站式框架。

 

针对EE开发分成三层结构

Web层:springMVC

业务层:spring(ioc)

持久层:jdbcTemplate

Spring的核心有两部分

(1)IOC 控制反转:

--之前的操作,想要调用类里面的方法(不是静态方法),就要创建类对象,由类对象调用方法实现。

--ioc就是把对象的创建,不是在代码中new出来,而是通过spring配置创建。

作用:实现类与类之间的解耦合。

底层原理:

-- xml配置文件+dom4j+工厂设计模式+发射

(2)aop 面向切面

--在不修改源代码的情况下,扩展功能,通过配置的方式实现。

 

Spring的简单入门

(1)创建spring的配置文件,建议放在src下面,名称随便写。

(2)在配置中引入约束

<beansxmlns="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">

(3)编写相关的类

 public class User {

 

 public void add(){

  System.out.println("add............."+name);

 }

(4)在配置文件中配置对象的创建

 <bean id="user" class="com.ioc.User" scope="prototype"></bean>

(5)测试

@Test

 public void demo1(){

  ApplicationContext context =

    new ClassPathXmlApplicationContext("bean1.xml");

  User user = (User) context.getBean("user");

  user.add();

 }

--底层原理

 请看图片


Bean实例化的三种方式

(1)创建对象,调用类中的无参构造方法实现(重点)

 <bean id="user" class="com.ioc.User" scope="prototype"></bean>

<bean id="user" class="com.ioc.User" init-method="init" destroy-method="destory"></bean>

-- init-method="init":在对象创建之后,也就构造方法执行之后 ,具体方法执行之前

-- destroy-method="destory":在容器关闭的时间执行

(2)使用静态工厂

--1.创建工厂类,在工厂类提供静态的方法,这个方法返回类对象

  --2.调用工厂类的方法时候,直接使用类名.方法名称可以调用

(3)使用实例工厂

--1.创建工厂类,在工厂类里面提供普通的方法,这个方法返回类对象

--2、调用工厂类的方法时候,创建工厂类对象,使用对象调用方法

Ioc和di的区别

1  IOC: 控制反转

(1)把对象的创建交给spring进行管理

 

2  DI: 依赖注入

(1)创建对象过程中,向类里面的属性中设置值

 

3 ioc和di关系:

(1)依赖注入不能单独存在,在控制反转基础之上完成

(2)注入类里面属性值,不能直接注入,创建类的对象再完成注入

BeanFactory 和 ApplicationContext 的区别:

BeanFactory :是在 getBean 的时候才会生成类的实例.
ApplicationContext :在加载 applicationContext.xml 时候就会创建.

Spring配置文件bean标签常用的属性

 

1.id属性:根据id属性值得到配置对象,

(1)id属性值不能相同的

(2)id属性值不能有特殊符号

2.class属性:要创建对象的类的全路径

3.scope属性:

(1)singleton:创建对象是单例,默认值。

(2)prototype:创建对象是多实例

(3)request:创建对象之后,把对象放到request域

(4)session:创建对象之后,把对象放到session域

(5)globalSession:创建对象之后,把对象放到globalSession里面

4.name属性

(1)name属性功能和id属性一样的,可以配置多个

(2)name属性和id属性区别:

- 在id属性值里面不能特殊符号

- 在name属性值里面可以添加特殊符号

Spring 的
Bean 的属性注入:

【构造方法的方式注入属性】
<!-- 第一种: 构造方法的方式 -->
<bean id="propertyDemo2" class="com.property.Demo2"> 

<constructor-arg name="address" value="渣滓洞"></constructor-arg>

</bean>
【set 方法的方式注入属性】
<!-- 第二种: set 方法的方式 -->
<bean id="demo1" class="com.property.Demo1">

<!-- 使用propety标签注入属性值

   name属性:类属性名称

   value属性:注入的值

 -->

<property name="name" value="东方不败"></property>

</bean>

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

<!-- 注入对象类型的属性 -->
<bean id="userDao" class="com.dao.UserDao"></bean>

<bean id="userService" class="com.service.UserService">

<!-- 在service里面注入dao属性

name属性:service里面dao属性的名称

注入dao对象,不能写value属性,写ref属性:dao配置bean的id值

-->

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

</bean>

 

Spring 的分配置文件的开发

1.如果同时引入外部,并且两个外部文件有同id的bean,后加载会覆盖之前

2.如果在同一个配置文件,定义两个同id的bean,是不行的,用的时候会报错

1.<!--一个配置文件引入另外的spring配置文件(常用) -->

<import resource="bean2.xml"/>

2.创建工厂的时候加载多个配置文件:
ApplicationContext applicationContext =new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml");

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 开源 框架