spring复习(一)框架概述和spring中基于xml的IOC配置

1.spring框架概述和spring中基于xml的IOC配置

简介

Spring是分层的 Java SE/EE应用 full-stack 轻量级开
源框架,以 IoC(Inverse Of Control: 反转控制)和
 AOP(Aspect Oriented Programming:面向切面编
程)为内核,提供了展现层 Spring MVC 和持久层 Sp
ring JDBC 以及业务层事务管理等众多的企业级应用技
术,还能整合开源世界众多 著名的第三方框架和类库

优点

1.方便解耦,简化开发  通过 Spring提供的 IoC容器,可
以将对象间的依赖关系交由 Spring进行控制,避免硬
编码所造 成的过度程序耦合。
2.AOP编程的支持  通过 Spring的 AOP 功能,方便进
行面向切面的编程
3.声明式事务的支持  可以将我们从单调烦闷的事务管
理代码中解脱出来,通过声明式方式灵活的进行事务的
管理, 提高开发效率和质量
4.方便程序的测试  可以用非容器依赖的编程方式进行
几乎所有的测试工作,测试不再是昂贵的操作,而是随
手可 做的事情。 
5.方便集成各种优秀框架  Spring可以降低各种框架的
使用难度,提供了对各种优秀框架(Struts、Hibernat
e、Hessian、Quartz 等)的直接支持。 

spring核心容器的创建

 

--1.ApplicationContext path = new ClassPathXmlApplicationContext("bean.xml");
//(1.1 ApplicationContext:对象在这生成 立即加载)

--2.Resource resource = new ClassPathResource("bean.xml");
XmlBeanFactory factory = new XmlBeanFactory(resource);
//BeanFactory--核心容器的对象在这生成(调用时生成延迟加载)

 

 

在web项目中,applicationContext容器的实例化交由web服务器完成. 

一般通过ContextLoaderListener实现,需要在web.xml中进行配置

spring 的bean

bean 标签

作用: 用于配置对象让 spring 来创建的。
默认情况下它调用的是类中的无参构造函数。
如果没有无参构造函数则不能创建成功。
属性: id:给对象在容器中提供一个唯一标识。用于获取对象。
class:指定类的全限定类名。用于反射创建对象。默认情况下调用无参构造函数。
scope:指定对象的作用范围。
* singleton :默认值,单例的.
* prototype :多例的.
* request :WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中.
* session :WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中.
* global session :WEB 项目中,应用在 Portlet 环境.如果没有 Portlet 环境那么 globalSession 相当于 session.(多个服务器共享session)

bean的实例化

1.构造器实例化
2.静态工厂实例化
3.实例化工厂作用域:
1.单例 bean在spring容器中只有一个实例
2.多例 每次获取bean 都会创建新的bean的实例

依赖注入

将spring容器里的某个bean
装配到 另一类中

1.使用构造函数提供

constructor-arg

2.使用set方法提供

property标签

3.使用注解提供

1.用于创建对象 相当于:<bean id="" class="">
* 作用和xml配置文件中编写一个bean标签实现的功能一样
*
1.1 @ Component
属性: value:指定 bean 的 id。如果不指定 value 属性,默认 bean 的 id 是当前类的类名。首字母小写。
-------一下三个注解(和Component作用一样)------------
1.2 @ Controller(和Component作用一样)
一般用于表现层
1.3@Service(和Component作用一样)
一般用在业务层
1.4@Repository(和Component作用一样)
一般用于持久层

* 2.用于注入数据的
* 作用和xml配置文件中的bean标签中写一个<property>作用一样
* 2.1@Autowired
* 自动按照类型注入。当使用注解注入属性时,set方法可以省略。它只能注入其他 bean 类型。
* 当有多个 类型匹配时,使用要注入的对象变量名称作为 bean 的 id,在 spring 容器查找,找到了也可以注入成功。找不到 就报错。
* 2.2Value
* 注入基本数据类型和 String 类型数据的 value:用于指定值
* 2.3@Resource
* 作用: 直接按照 Bean 的 id 注入。它也只能注入其他 bean 类型。
* 属性: name:指定 bean 的 id
* 3.用于改变作用范围的(相当于:<bean id="" class="" scope=""> )
* 作用集合在bean标签中使用scope属性实现的功能一致
* 3.1@Scope
* 作用: 指定 bean 的作用范围。 属性: value:指定范围的值。 
* 取值:singleton prototype request session globalsession 

* 4.和生命周期相关的
* 作用和bean标签中使用scope属性实现的功能一样

区分一下@Autowired和@Resource两个注解的区别:

(1)、@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配
(2)、@Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了'

基于注解ioc

1.扫描包<context:component-scan>
2.穿件对象交给容器 @Component  相当于:<bean id="" class="">  
3.依赖注入@Autowired 相当于:<property name="" ref="">   
4.@Value 注入基本数据类型和 String 类型数据的 

posted @ 2020-07-02 22:11  三只坚果  阅读(166)  评论(0编辑  收藏  举报