SpringIOC个人心得笔记

        本篇博客是在学习Spring时所写博客,仅供参考(加自己心得想法)

目录

学习流程 

1.Spring的基本概述

1.1spring是一个开源框架 轻量级  2003年兴起的  俗称一站式轻量级开源框架

1.2spring的好处:

1.3Spring的版本

1.4Spring的IOC入门

1.5官网:http://spring.io/   没有JAR的可以去官网下载  

1.6解压Spring的开发包

1.7三种jar简单介绍

1.8我们来创建一个WEB项目  

1.9代码模板

1.10 SpringIOC底层实现详解!!! 例如之前使用MYSQL 换其他数据库 可能需要改源码 现在Spring就是在帮助我们 以后无需改源码 改配置文件即可  

2.0 DI和IOC的区别

2.1 Spring的工厂类

2.2ApplicationContext和BeanFactory区别

2.3XML的自动提升 配置在celipse中wendow 查找到XML 去配置 前提你是有约束的 

2.4Bean的相关的配置

2.5Bean的生命周期的配置(了解)

2.6Bean的作用范围的配置(重点)

2.7Spring的Bean的实例化方式(了解)

无参构造方法的方式(默认)

静态工厂实例化的方式

实例工厂实例化的方式

Spring的属性注入

Set方法的方式的属性注入

P名称空间的属性注入(Spring2.5以后)

SpEL的属性注入(Spring3.0以后)

集合类型属性注入(了解)

Spring的IOC的注解开发


   本人使用的是4.2版本 

学习流程 

  1. Spring第一天:Spring的概述、SpringIOC入门(XML)、Spring的Bean管理、Spring属性注入
  2. Spring第二天:Spring的IOC的注解方式、Spring的AOP开发(XML)
  3. Spring第三天:Spring的AOP的注解开发、Spring的声明式事务、JdbcTemplate。

1.Spring的基本概述

1.1spring是一个开源框架 轻量级  2003年兴起的  俗称一站式轻量级开源框架

1.2spring的好处:

SpringIOC个人心得笔记_第1张图片

1.3Spring的版本

Spring3.x和Spring4.x  Spring5.x (已经出来了)

1.4Spring的IOC入门

IOC俗称"控制反转" 

控制反转:将对象的创建权反转给(交给)Spring。意思把对象交给Srping容器来创建 底层会使用Spring的工厂类通过xml配置文件+反射来实现 具体后面详细介绍  不需要NEW 来创建对象了  工厂模块不清楚的可以去看看23种设计模式 PS:有的也说24种

我学spring 用了 两种模式 一个maven  一个是普通自己导入jar 出现一大堆问题(已解决PS不会的去CSDN看看大佬博客立马get到错误的点了) 主要还是JAR包问居多  建议用maven还是不错的 前提有网络 不然缺少jar 无法去中央仓库去下载

1.5官网:http://spring.io/   没有JAR的可以去官网下载  

1.6解压Spring的开发包

SpringIOC个人心得笔记_第2张图片

  1. docs            :Spring的开发规范和API
  2. libs              :Spring的开发的jar和源码
  3. schema      :Spring的配置文件的约束

由于网络限制上不了QQ 无法截图  具体详细 我博客写完会把我的SpringDemo上传到CSDN 感兴趣的可以下载学习

1.7三种jar简单介绍

SpringIOC个人心得笔记_第3张图片

.jar 就是我们需要使用的Spring的jar包 

javadoc.jar  是JAR包的官方文档 可以打开看看

sources.jar 是源码 感兴趣的可以把这个导入到项目中查看源码 

1.8我们来创建一个WEB项目  

下面是体系结构 

SpringIOC个人心得笔记_第4张图片

引入包的话 目前我们首先引入上面红框框的四块jar  最基础的jar  后面使用其他的 再导入

 

SpringIOC个人心得笔记_第5张图片

0. 是apache提供的日志接口 --定义的都是接口规范

1.Spring的日志文件

2. 四个基本jar(最主要的!!)

1.9代码模板

创建一个接口及接口实现类

/**
 * 用户管理DAO层接口
 * @author jt
 *
 */
public interface UserDAO {
	public void save();
}
/**
 * 用户管理DAO层实现类
 * @author jt
 *
 */
public class UserDAOImpl implements UserDAO {
	private String name;

	public void setName(String name) {
		this.name = name;
	}

	public void save() {
		System.out.println("UserDAOImpl执行了..."+name);
	}

}

创建一个测试类

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

/**
 * Spring的入门
 * @author jt
 *
 */
public class SpringDemo1 {

	@Test
	/**
	 * 传统方式的调用
	 */
	public void demo1(){
		UserDAOImpl userDAO = new UserDAOImpl();
		userDAO.setName("王东");
		userDAO.save();
	}
	
	@Test
	/**
	 * Spring的方式的调用
	 */
	public void demo2(){
		// 创建Spring的工厂
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserDAO userDAO = (UserDAO) applicationContext.getBean("userDAO");
		userDAO.save();
	}
	
	@Test
	/**
	 * 加载磁盘上的配置文件
	 */
	public void demo3(){
		ApplicationContext applicationContext = new FileSystemXmlApplicationContext("C:\\applicationContext.xml");
		UserDAO userDAO = (UserDAO) applicationContext.getBean("userDAO");
		userDAO.save();
	}
}

SpringIOC个人心得笔记_第6张图片

思考 这是传统方式 有什么不好的?

如果底层的实现切换了,需要修改源代码,能不能不修改程序源代码对程序进行扩展?

那么就引入了Spring的IOC底层实现  

以前想创建对象 用传统方式 需要实现类 或者接口方式 

问题2  面向接口编程的优缺点?(想深入研究去看大佬博客)

多态  方便程序的扩展   缺点 有耦合  联系过紧  需要改底层源代码

OCP原则认为:一个软件应该对扩展开放,对修改关闭。设计模式原则 这个很重要 我现在也是了解个皮毛

好的程序设计 应该满足OCP(设计模式)  尽量不修改底层源码的情况下对程序做扩展

1.10 SpringIOC底层实现详解!!! 例如之前使用MYSQL 换其他数据库 可能需要改源码 现在Spring就是在帮助我们 以后无需改源码 改配置文件即可  

工厂模式------>

SpringIOC个人心得笔记_第7张图片

applicationContext.xml的配置(默认名字)  上面是Bean的约束 可以去Spring查找的复制过来

SpringIOC个人心得笔记_第8张图片

SpringIOC个人心得笔记_第9张图片

SpringIOC个人心得笔记_第10张图片

上面是如何写Bean的约束 不清楚的可以百度 

2.0 DI和IOC的区别

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

DI:依赖注入(DI的前提是IOC的环境 才可以使用DI )前提必须有IOC的环境,

Spring管理这个类的时候将类的依赖的属性注入(设置)进来

2.1依赖   B中有A

Class A{}

Class B{

 public void xxx(A a){}}

继承:is a    父子

Class A{}

Class B extends A{}

聚合:has a  包含

2.1 Spring的工厂类

Spring工厂类的结构图

SpringIOC个人心得笔记_第11张图片

ApplicationContext继承BeanFactory。

2.2ApplicationContext和BeanFactory区别

  • BeanFactory:调用getBean的时候,才会生成类的实例。
  • ApplicationContext  :新版本的工厂类 子类比父类的功能更多 目前子类使用居多
  1. ApplicationContext:加载配置文件的时候,就会将Spring管理的类都实例化。(单例 默认是单例)
  2. ApplicationContext有两个实现类
    1. ClassPathXmlApplicationContext  :加载类路径下的配置文件(通常比较常用)
    2. FileSystemXmlApplicationContext   :加载文件系统下的配置文件

个人理解 第一个 可以认为 是相对路径 默认查找Src路径下的配置文件   第二个是绝对路径 包含本地磁盘的路径

2.3XML的自动提升 配置在celipse中wendow 查找到XML 去配置 前提你是有约束的 

SpringIOC个人心得笔记_第12张图片

SpringIOC个人心得笔记_第13张图片

 

2.4Bean的相关的配置

  • id                 :使用了约束中的唯一约束。里面不能出现特殊字符的。
  • name         :没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)。里面可以出现特殊字符。

2.5Bean的生命周期的配置(了解)

  • init-method                 :Bean被初始化的时候执行的方法
  • destroy-method         :Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭

PS: 个人认为

  • 在默认单例模式情况下 关闭工厂就会销毁而且每创建产生的地址都相同
  • 多例的情况下 不会销毁  而且每创建产生的地址都不相同

2.6Bean的作用范围的配置(重点)

  • scope :Bean的作用范围
    • singleton          :默认的,Spring会采用单例模式创建这个对象。
    • prototype        :多例模式。(Struts2Spring整合一定会用到)
    • request              :应用在web项目中,Spring创建这个类以后,将这个类存入到request范围中。
    • session               :应用在web项目中,Spring创建这个类以后,将这个类存入到session范围中。
    • globalsession    :应用在web项目中,必须在porlet环境下使用。但是如果没有这种环境,相对于session。

2.7Spring的Bean的实例化方式(了解)

Bean已经都交给Spring管理,Spring创建这些类的时候,有几种方式:

无参构造方法的方式(默认)

SpringIOC个人心得笔记_第14张图片

静态工厂实例化的方式

SpringIOC个人心得笔记_第15张图片

实例工厂实例化的方式

SpringIOC个人心得笔记_第16张图片

Spring的属性注入

SpringIOC个人心得笔记_第17张图片

Set方法的方式的属性注入

SpringIOC个人心得笔记_第18张图片

SpringIOC个人心得笔记_第19张图片

P名称空间的属性注入(Spring2.5以后)

  • 写法:
    • 对象属性         p:属性名-ref=”值”
    • 普通属性         p:属性名=”值”

SpringIOC个人心得笔记_第20张图片

SpEL的属性注入(Spring3.0以后)

  • SpEL:Spring Expression Language,Spring的表达式语言。
    • 语法:
      • #{SpEL}

SpringIOC个人心得笔记_第21张图片

集合类型属性注入(了解)

 


	
	
		
		
			
				王东
				赵洪
				李冠希
			
		
		
		
		
			
				李兵
				赵如何
				邓凤
			
		
		
		
		
			
				aaa
				bbb
				ccc
			
		
		
		
		
			
				
				
				
			
		

 

Spring的IOC的注解开发

  • 注解的入门
    • 引入aop的包
    • 引入context约束
    • 使用注解开发
      • @Component           :定义Bean
        • @Controller    WEB
        • @Service          Service
        • @Repository  DAO
      • 属性注入:
        • 普通属性        @Value
        • 对象属性        @Resource
          • @Autowired   :按类型注入属性,按名称@Qulifier
  • XML方式和注解方式比较
    • XML方式        :适用性更广,结构更加清晰。
    • 注解方式        :适用类是自己定义,开发更方便。
  • XML和注解的整合开发
    • XML定义类
    • 注解属性注入

你可能感兴趣的:(Spring,个人心得及总结,主流框架底层源码详解,Spring)