xiaobai_Spring核心容器功能

Spring框架是一个融合剂,可以将Struts2框架和Hibernate框架整合在一起使用可以成为SSH;
Spring框架中的核心分为两个概念 IOC(控制反转) 和AOP(面向切面编程)

IOC(控制反转)

控制反转就是,原来是程序员自己来new创建对象,现在是Spring框架来给创建对象
也可以叫做di (依赖注入)
相当于Player 里面有一个 Team对象然后Spring 框架在创建player对象是首先创建一个Team对象在给Player对象注入;

对象容器有三种创建实例对象方法
导入jar包
1.可以根据构造方法来创建实例对象

  • 有参构造

    在Spring.xml xml文档中创建一个实例对象
    例如
    在这里插入图片描述
    通过bean标签里面的constructor_arg标签里面的index 是参数的索引位置从0开始,value是给值

  • 无参构造
    在这里插入图片描述

这个创建出来的是一个没有值的对象

2.通过factory静态工厂来创建对象
创建一个phone实体类
在这里插入图片描述

在创建一个factory工厂
在这里插入图片描述
传参数然后在Spring.xml里面配置bean标签
在这里插入图片描述

测试:
在这里插入图片描述

3.通过调用factory 工厂里面的方法来创建
创建一个工厂对象

在这里插入图片描述

在Spring.xml里面配置
在这里插入图片描述
配置完成测试:
在这里插入图片描述
完成三个创建方式

di(依赖注入)
1————构造方法赋值
通过bean标签里面的constructor_arg标签里面的index 是参数的索引位置从0开始,value是给值

2————set赋值(里面可以方set集合,数组,map<k,v>集合,其他对象,Properties(它是hashtable的子类也是k,v结构的),list)

//set的赋值
<property name="该类中对应的set方法后面的名字()">
	<set>
			<value>值</value>
			<value>值</value>
			<value>值</value>
	</set>
</property>



//数组的赋值
<property name="该类中对应的set方法后面的名字()">
	<array>
			<ref bean="其他的唯一标识查找对象"/>
            <ref bean="其他的唯一标识查找对象"/>
	</array>
</property>



//map集合
property name="该类中对应的set方法后面的名字()">
	<map>
			<entry key="key(键)"  value="value(value值)"/>
			<entry key="key(键)"  value="value(value值)"/>
	</map>
</property>


//引用其他对象
<property name="该类中对应的set方法后面的名字()" ref="其他的唯一标识"/>



//property
 <property name="该类中对应的set方法后面的名字()">
        <props>
            <prop key="key(键)">value(value值)</prop>
			<prop key="key(键)">value(value值)</prop>
			<prop key="key(键)">value(value值)</prop>
        </props>
 </property>
	
	

//list集合
<property name="该类中对应的set方法后面的名字()">
	<list>
			<value>值</value>
			<value>值</value>
			<value>值</value>
	</list>
</property>

3.注解注入
注解注入有两种
@Autowired 自动绑定
@Resource 资源
使用注解注入的时候线打开注解开关
context:annotation-config/
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
两个注解的区别是
@Autowired 根据类型匹配 它是Spring框架提供的
@Resource 先是genuine名字匹配再是根据类型抓取,他是jdk提供提供


核心容器的其他功能


bean的作用域分为两个
一个为单例(singleton)只能创建一个对象 ,一个为多例(prototype)会创建多个对象

1、单例bean的配置:
bean id=“shanzhu” class=“com.youzhong.entity.ShanZhu” 默认单例
2、多例的bean配置:
bean id=“shanzhu” class=“com.youzhong.entity.ShanZhu” scope=“prototype”

有四个注解
@Controller , @Service , @Repository , @Component
控制器 服务,业务 仓库,存储 组件

@Controller,@Service,@Repository,@Component
四个注解的功能完全相同。它们的区别是语义不同。
@Controller 是控制的意思,应该添加在控制层的类上,如struts2的Action。
@Service 是服务业务的意思,应该添加在业务层的类上,如ssh的Service。
@Repository 是仓库的意思,应该添加在dao层的类上,如UserDao。
@Component 是组件的意思,应该添加在除了上面三层的其他层次;

bean的生命周期
在创建他的时候会先执行init()方法然后再调用init-method方法
创建完了执行,执行完了不会立即调用distory方法,当容器销毁的时候才会调用销毁方法.

懒加载
lazy_init="true"是启动懒加载 只对bean单例进行设置,要是对多例进行的话就会更懒;
比较复杂的bean,需要懒加载不让他在类加载的时候创建

依赖
depends_on 依赖
假如有两个dean标签的话
有一个标签里面有 depebds_on属性的时候会先创建另一个对象在创建该对象

autowire 自动绑定
需要在Spring.xml中的bean标签中配置
autowire="";有三个参数是default ,byName,byType;第一个是根据默认实在上面的beans标签中配置的,第二个是根据名字查找,第三个是根据类型匹配

引入其他xml的时候
在xml里面配置
在取数据的时候ApplicationContext ac = new ClassPathXmlApplicationContext(“spring.xml”,“spring2.xml”);

常用的接口有两个:BeanFactory , ApplicationContext
BeanFactory是spring框架内部使用的,只提供了管理bean的功能。
ApplicationContext 是框架外部使用的,它是BeanFactory的孙子接口,扩展了BeanFactory的功能,增加了一些企业级的应用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值