1.spring起源:
早期使用java开发企业应用(企业应用系统,比如:人力资源管理系统、OA办公自动化系统、财务系统 ,所有企业应用的系统总称为ERP)使用EJB(Enterprise java Bean)开发,是sun提供的规范,比如:把javabean分为:Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。
EJB特点依赖于应用服务器(比如:weblogic、websphere,类似 于tomcat),在开发EJb程序时过程比较繁琐。
Spring的出现是为了取代EJB的臃肿、低效、脱离现实缺点。Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。
2.参考资料
3.spring定义(什么是spring)(官网: http://spring.io/ )
Spring是分层的JavaSE/EE应用一站式的轻量级开源框架。以Ioc(Inverse of control)控制反转和Aop(Aspect Oriented Programming)面向切面编程为核心
分层:
web层
web层:spring MVC框架(类似 struts2,是一个mvc框架),提供和其它web层整合方案;
业务层
业务层:声明式事务管理方式、任务调度;
持久层
持久层:jdbc模版开发工具包、和其它持久层hibernate框架整合方案;
上边各层以IOC和AOP作为基础。
一站式:
spring提供各层的解决方案。
轻量级:
相对于EJB来说,好用,简单、方便,spring不依赖应用服务器(weblogic)。
开源框架:
纯java开源框架;
整合众多开源框架;
和Struts2 表现层框架整合;
和Hibernate 持久层框架整合;
和Ibatis、Mybatis持久层框架整合 ;
现在企业 90% 以上,都在使用Spring !!!!!!!
4.Spring好处
1.方便解耦,简化开发:
Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
2.AOP编程的支持:
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
3.声明式事务的支持:
只需要通过配置就可以完成对事务的管理,而无需手动编程
4.方便程序的测试:
Spring对Junit4支持,可以通过注解方便的测试Spring程序
5.方便集成各种优秀框架:
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
6.降低JavaEE API的使用难度:
Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低
5.spring装配Bean/实例化Bean的方式
1.applicationContext.xml方式:
在xml当中配置一个bean,然后写一个入口测试一下
2.注解方式:
用到的注解有:@Component,@Repository,@Service,@Controller
然后在配置文件里添加注解扫描:
3.javaBean的方式:
声明一个java类,类上加@Configuration,如果是springboot项目,类上加@SpringBootConfiguration,
方法上加@Bean这个注解:
6.FactoryBean和BeanFactory的区别
FactoryBean,是一个特殊Bean,可以生产另一个bean。
BeanFactory,是一个工厂,可以生产任意bean。
7.IOC、DI
不使用IOC对象之间调用,存在耦合问题;
如果使用IOC思想,将iOC当成一个容器,对象要调用另一个对象时,通过iOC容器来调用,
引用iOC,iOC是Inversion of Control的缩写,翻译成“控制反转”;
IOC定义:
将原来程序中自己创建实现类对象的控制权反转到iOC容器中,程序只需要从iOC容器获取创建好的对象;
iOC容器相当于一个工厂;
DI:
所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
8.IOC和DI的区别
iOC和 DI 描述的是同一件事 ;
iOC强调 将对象的创建权,被反转到IoC 容器;
DI 强调 iOC容器将对象的依赖关系,动态注入到对象之中 ,DI是控制反转具体的实现过程。
依赖注入关系:
9.IOC容器的作用
1、将bean配置在applicationContext.xml中,IOC容器在构建时自动创建bean实例(相当于new 对象)
2、将bean所依赖的bean配置在applicationContext.xml中,IOC容器自动将bean所依赖的对象注入进去。
10.ClassPathXmlApplicationContext的三种路径方式
两个xml传入另一个xml中:import
11.bean的命名方式
1.id
<bean id="pName1" class="pojo.Person"></bean>
2.name
1)name引号里的值不能重复,<bean name="pName2" class="pojo.Person"></bean>
<bean name="pName3" class="pojo.Person"></bean>
2) name可以定义多个用逗号隔开,<bean name="pName4,pName5" class="pojo.Person"></bean>
3)获取任意name即可获取bean
3.匿名
没有名称,自定义的获取需要的全限定名
<bean class="pojo.Person"></bean>
12.bean的作用域
1.singleton
单例 默认使用单例,不存数据共享用单例,单例就创建一个实例 ;
<bean id="dan" class="pojo.Person" scope="singleton"></bean>
2.prototype
多例 存在数据共享用多例,多例每次都会创建一个实例;
<bean id="duo" class="pojo.Person" scope="prototype"></bean>
spring笔记整理大全(二)链接: