目录
一、SpringFramework的简介
二、Spring入门
1.下载
2. 各版本差异
3.spring框架的核心模块
三、ioc-控制反转
1.控制反转
2.基于xml的ioc
1.创建java se工程
2.添加spring的核心依赖
3.创建xml文件
4.普通bean的控制反转
5.静态工厂的控制反转
6.实例工厂的控制反转
7、后处理bean
8、Bean的生命周期
四、BeanFactory和ApplicationContext的区别:
五、基于注解的开发
先开启组件扫描
常见的注解
总结
一、SpringFramework的简介
Spring是一个轻量级的一栈式开源框架,它由Rod Johnson创建。它是为了解决企业应用开发复杂性而创建的。Spirng使用基本的javaBean来完成以前只能由EJB完成的事情,然而,spring的用途不仅限于服务器端的开发。从简单性。可测试行和松耦合的角度而言,任何java应用都可以从Spring中收益。
Spring是一个轻量级的控制反转(ioc)和面向切面(aop)的容器框架
轻量--从大小与开销两个方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1mb多的jar文件里发布。并且Spring所需要的处理开销也是微不足道的(单例)。此外,Spring是非侵入式的:典型地,Spring应用中的独享不依赖于Spring的特定类
控制反转--Spring通过只一种称作控制反转(ioc)的技术出尽了松耦合。当应用了ioc,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为ioc和jndl相反--不是对象从容器中查找依赖,而是容器在独享初始化时不等对象请求就主动将依赖传递给它(即容器一旦创建就初始化了容器中的对象--单例)
面向切面(方面)--spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。应用对象只实现他们应该做的--完成业务逻辑--仅此而已。他们不赋值其他系统级关注点,例如日志或事务支持
容器--Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一个容器,你可以配置你的每个bean如何被创建 ---基于一个可配置原型,你的bean可以创建一个单独的实例(单例)或者你每次需要时都生产一个新的实例(多例)--以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级EJB容器,他们经常是庞大而笨重的,难以使用
框架---Spring可以讲简单的组件配置、组合称为复杂的应用。在Spring中应用对象不黑声明式地组合,典型地是在一个xml文件里。Spring也提供了很多基础功能(事务管理、持久哈框架集成等等),将应用逻辑开发留给了你。
所有的Spring的这些特征使你能够编写更干净、更可管理、并且更容易测试的代码。他们也为Spring中的各种模块提供了基础支持
Spring是一个轻量级的一栈式开源框架,它由Rod Johnson创建。它是为了解决企业应用开发复杂性而创建的。Spirng使用基本的javaBean来完成以前只能由EJB完成的事情,然而,spring的用途不仅限于服务器端的开发。从简单性。可测试行和松耦合的角度而言,任何java应用都可以从Spring中收益。
Spring是一个轻量级的控制反转(ioc)和面向切面(aop)的容器框架
轻量--从大小与开销两个方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1mb多的jar文件里发布。并且Spring所需要的处理开销也是微不足道的(单例)。此外,Spring是非侵入式的:典型地,Spring应用中的独享不依赖于Spring的特定类
控制反转--Spring通过只一种称作控制反转(ioc)的技术出尽了松耦合。当应用了ioc,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为ioc和jndl相反--不是对象从容器中查找依赖,而是容器在独享初始化时不等对象请求就主动将依赖传递给它(即容器一旦创建就初始化了容器中的对象--单例)
面向切面(方面)--spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。应用对象只实现他们应该做的--完成业务逻辑--仅此而已。他们不赋值其他系统级关注点,例如日志或事务支持
容器--Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一个容器,你可以配置你的每个bean如何被创建 ---基于一个可配置原型,你的bean可以创建一个单独的实例(单例)或者你每次需要时都生产一个新的实例(多例)--以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级EJB容器,他们经常是庞大而笨重的,难以使用
框架---Spring可以讲简单的组件配置、组合称为复杂的应用。在Spring中应用对象不黑声明式地组合,典型地是在一个xml文件里。Spring也提供了很多基础功能(事务管理、持久哈框架集成等等),将应用逻辑开发留给了你。
所有的Spring的这些特征使你能够编写更干净、更可管理、并且更容易测试的代码。他们也为Spring中的各种模块提供了基础支持
二、Spring入门
1.下载
Spring的官网:Spring | Home
2. 各版本差异
spring3.x:主要支持xml配置,并引入了部分注解用于简化xml配置
spring4.x:主要支持xml配置,完善了注解,可以在不采用xml的配置方式,完全使用注解完成,支持jdk8
spring5.x:支持spring web工厂向springboot一样可以通过main来访问t
3.spring框架的核心模块
spring3.x:主要支持xml配置,并引入了部分注解用于简化xml配置
spring4.x:主要支持xml配置,完善了注解,可以在不采用xml的配置方式,完全使用注解完成,支持jdk8
spring5.x:支持spring web工厂向springboot一样可以通过main来访问t
核心容器
1. beans 2. core 3. context 4. spel(spring expression language) 5. jcl(日志处理
三、ioc-控制反转
控制反转:将对象的创建权交给spring容器进行管理
最终通过 工厂模式、反射和配置文件实现了解耦合的作用(spring的基本原理)
1.控制反转
是面向对象编程的一种设计模式,可以用来降级计算机代码之间的耦合度。其中最常见的方式叫做依赖注入,还有一种方式将依赖查找。通过控制反转,对象在创建的时候,由spring容器来将所依赖的对象的引用传递给它,也可以说,依赖被注入到对象中
2.基于xml的ioc
1.创建java se工程
2.添加spring的核心依赖
是面向对象编程的一种设计模式,可以用来降级计算机代码之间的耦合度。其中最常见的方式叫做依赖注入,还有一种方式将依赖查找。通过控制反转,对象在创建的时候,由spring容器来将所依赖的对象的引用传递给它,也可以说,依赖被注入到对象中
1.创建java se工程
2.添加spring的核心依赖
3.创建xml文件
4.普通bean的控制反转
4.普通bean的控制反转
spring的工厂接口的实现 主要有两种
ClassPathXmlApplicationContext 通过类路径下的xml文件生产工厂对象
//2.使用spring的ioc容器进行 ClassPathXmlApplicationContext
ClassPathXmlApplicationContext factory=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService service = factory.getBean("userServiceImpl",UserService.class);
service.save();
FileSystemXmlApplicationContext 通过文件系统的xml文件来生成工厂对象(绝对路径)
//3.使用FileSystemXmlApplicationContext
ApplicationContext factory=new FileSystemXmlApplicationContext("D:\eclipseCode\spring01\src\applicationContext.xml");
UserService service = factory.getBean("userServiceImpl",UserService.class);
service.save();
5.静态工厂的控制反转
工厂模式中获取实例的方法是静态方法
package com.sofwin.factory;
import com.sofwin.service.UserService;
import
com.sofwin.service.impl.UserServiceImpl2;
public class ObjectFactory {
public static UserService
getUserService() {
return new UserServiceImpl2();
}
// ....
}
6.实例工厂的控制反转
工厂模式获取的方法为普通方法
public class ObjectFactory {
public UserService getUserService() {
return new UserServiceImpl2();
}
// ....
}
7、后处理bean
spring源码中经常使用的bean,能够监控容器中所有的bean的初始化
主要有两个方法 初始化方法执行前
初始化方法执行后
后处理bean不是普通的java类 要implements BeanPostProcessor
public class MyPostBean implements
BeanPostProcessor {
@Override
public Object
postProcessBeforeInitialization(Object
bean, String beanName) throws
BeansException {
System.out.println("before....."+bean+beanN
ame);
return bean;
}
@Override
public Object
postProcessAfterInitialization(Object bean,
String beanName) throws BeansException {
System.out.println("after...."+bean+beanNam
e);
return bean;
}
}
spring源码中经常使用的bean,能够监控容器中所有的bean的初始化
主要有两个方法 初始化方法执行前
初始化方法执行后
后处理bean不是普通的java类 要implements BeanPostProcessor
将后处理器bean交给spring容器管理
8、Bean的生命周期
执行的顺序是
构造方法
初始化方法 ---可以将普通的方法声明为初始化方法,在构造方法执行以后执行一次,只执行一次
销毁方法 ---可以讲普通方法声明为销毁方法,在spring容器关闭前执行
销毁方法要执行必须是单例的并且要手动关闭容器才会执行
四、BeanFactory和ApplicationContext的区别:
1.都是接口。ApplicationContext为子接口
2.在单例模式下,ApplicationContext容器在创建的时候会实例化容器中的所有实例。BeanFactory在第一次调用getBean的方法时实例化对象
3.在多例模式下,都在调用getBean的时候实例对象
五、基于注解的开发
先开启组件扫描
1.都是接口。ApplicationContext为子接口
2.在单例模式下,ApplicationContext容器在创建的时候会实例化容器中的所有实例。BeanFactory在第一次调用getBean的方法时实例化对象
3.在多例模式下,都在调用getBean的时候实例对象
先开启组件扫描
开启组件扫描要引入context的约束
xmlns:context="http://www.springframework.o rg/schema/context"
http://www.springframework.org/schema/conte xt
https://www.springframework.org/schema/con text/spring-context.xsd"
常见的注解
@Component
原生注解,类级别的注解,用于声明javaBean
使用场景:除了控制层、业务层、dao层其余需要ioc的都可以使用@Component
衍生注解
@Repository
用于dao层
@Service
用于业务层
@Controller
用于控制层
声明周期的注解
@PostConstructor
@PreDestroy
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。



