目录
摘要:主要记录了在学习spring中记录的笔记
spring概念
spring是一个开源的轻量级框架
(轻量级是指这个框架不依赖于其他很多的东西,可以直接使用)
核心特征:
- IOC 控制反转
- 比如说现在有一个类,类里面有一个方法,假如调用类里面的一个方法,需要创建类的对象,需要
new
出来对象 - 对象的创建不是通过
new
方式实现,而是交给spring配置创建类对象
- 比如说现在有一个类,类里面有一个方法,假如调用类里面的一个方法,需要创建类的对象,需要
- AOP 面向切面编程 扩展一个功能不是修改源代码实现
spring是一站式框架
spring在javaee三层结构中,每一层都提供不同的解决技术:
- web层:springMVC
- service层:spring的IoC
- dao层:spring的jdbcTemplate
spring版本
spring 4.x
spring IoC操作
- 把对象的创建教给spring进行管理
- IoC操作两部分
- IoC配置文件方式
- IoC注解的方式
IoC底层原理
- xml配置文件
- dom4j解决xml
- 工厂设计模式
- 反射
原始方式
public class User{
public void add(){
//doSomething..
}
}
//在servlet调用类里面的方法
User user=new User();
User.add();
以上代码中,假如类名发生更改,或者方法名发生更改。缺陷在于耦合度太高了。
使用工厂模式解耦和的操作
public class UserService{
public void add(){
}
}
public class UserServlet{
public void addUser(){
UserService s=Factory.getService();
s.add();
}
}
//解决方案,创建工厂类
public class Factory{
//提供返回UserService对象的方法
public static UserService getService(){
return new UserService();
}
}
在以上的解决方案中 servlet和工厂类耦合。开发中的一种思想是高内聚,低耦合。
IoC的实现方式
public class UserService{
}
public class UserServlet{
//得到UserService的对象的原始方式:new创建
UserFactory.getService();
}
第一步:创建xml配置文件,配置要创建的对象类
<bean id="userService" class="com.zhangjinbang.UserService">
第二步:创建一个工厂类,使用dom4j解析配置文件+反射
public class UserFactory{
//返回UserService对象的方法
public static UserService getService(){
//使用dom4j解析xml文件
//根据id值userService,得到id对应的class属性值
String classValue=...
//使用反射创建类对象
Class clazz=Class.forName(classValue);
//创建类对象
UserService service=class.newInstance();
return service;
}
}
以上,当类的路径发生变化的时候,只需要修改配置文件就可以了,其他的文件都可以不用改变。
IoC入门案例
步骤:
- 导入jar包
- 创建类,在类里面创建方法
- 创建spring配置文件,配置创建类
- 写代码测试对象创建
jar包的特点,每个功能有三个jar包,基础jar包,文档jar包,源代码jar包
环境准备
做spring最基本功能的时候,导入四个核心jar包就可以了
- spring-beans
- spring-context
- spring-core
- spring-expression
导入支持日志输出的jar包
- commons-logging
- log4j
maven pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zhangjinbang</groupId>
<artifactId>springdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springdemo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<!--spring-context依赖上面所提到的其他spring的beans、core、expression jar包,所以这里只需要写着一个就够了-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
</dependencies>
</project>
创建一个类
package com.zhangjinbang.ioc
public class User{
public void add(){
System.out.println("add ...");
}
public static void main(String[] args){
//原始的做法
User user = new User();
User.add();
}
}
创建spring配置文件
【注意】spring核心配置文件名称和位置不是固定的,建议放到src
下面,官方建议applicationContext.xml