Sping和IOC内容

关于SPring的认识

1.什么是Spring

Spring 框架是一个分层架构。

Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架,以IoC(Inverse of Control 反转控制)和AOP(Aspect Oriented Programming 面向切面编程为内核)

2.应用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应用难度大大降低.

3.Spring Ioc控制反转快速入门案例

配置bean被Spring管理
<bean id="collectionBean" class="cn.zyl.pojo.CollectionBean">
public class test {
    public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("appactionContext.xml");
        CollectionBean collectionBean = (CollectionBean)applicationContext.getBean("collectionBean");
        applicationContext.close();
        }
  }
	小详解:为什莫把bean交给Spring 管理,1.所有的对象都被Spring管理,会具有一定的规范标准。2.能让你的对象更强大

4. 三种实例化bean的方式

  • 使用类构造器实例化(默认无参数)
    <bean id=“personService" class="com.baidu.PersonServiceImpl"/>
  • 使用静态工厂方法实例化(简单工厂模式)
    <bean id="helloService" class="cn.zyl.pojo.HelloServiceStaticFactory" factory-method="creatHelloService"></bean>
  • 使用实例工厂方法实例化(工厂方法模式):
    <bean id="helloServiceFactory" class="cn.zyl.pojo.HelloServiceFactory"></bean> <bean id="helloService" factory-bean="helloServiceFactory" factory-method="creatHelloService"></bean>
2.Bean的命名 id属性和name属性
  • 一般情况下,装配一个Bean时,通过指定一个id属性作为Bean的名称
  • id 属性在IoC容器中必须是唯一的
  • id 的命名要满足XML对ID属性命名规范
  • 必须以字母开始,可以使用字母、数字、连字符、下划线、句号、冒号
  • 如果Bean的名称中含有特殊字符,就需要使用name属性
  • <bean name="#person" class="com.baidu.pojo.Person"/>
  • 因为name属性可以相同,所以后出现Bean会覆盖之前出现的同名的Bean
    ######3. Bean的作用域
    在这里插入图片描述
Spring容器中Bean的生命周期
  • instantiate bean对象实例化
  • populate properties 封装属性
  • 如果Bean实现BeanNameAware 执行 setBeanName
  • 如果Bean实现BeanFactoryAware 或者 ApplicationContextAware 设置工厂 setBeanFactory 或者上下文对象 setApplicationContext
  • 如果存在类实现BeanPostProcessor (后处理Bean) ,执行postProcessBeforeInitialization(重点)
  • 如果Bean实现InitializingBean 执行 afterPropertiesSet
  • 调用 指定初始化方法 init
  • 如果存在类实现 BeanPostProcessor(处理Bean) ,执行postProcessAfterInitialization
  • 执行业务处理
  • 如果Bean实现 DisposableBean 执行 destroy(新版本已经取消)
    调用 指定销毁方法 customerDestroy

依赖注入(DI)Bean的属性

对于类成员变量,注入方式有三种{Spring支持前两种}

构造函数注入
属性setter方法注入
接口注入
构造函数注入
<bean id="collectionBean" class="cn.zyl.pojo.CollectionBean">
</bean>
    <constructor-arg index="0" value="11" ></constructor-arg></bean>
属性setter方法注入
<bean id="collectionBean" class="cn.zyl.pojo.CollectionBean">
<bean>
<!--    <property name="age" value="10"></property>-->
<!--    <property name="name" value="yali"></property>-->
</bean>
集合类型属性注入

1.map

<map>
            <entry key="name" value="zuyauna"></entry>
            <entry key="age" value="15"></entry>
            <entry key="sex" value="nv"></entry>
        </map>

2.Properties

    <property name="properties">
        <props>
            <prop key="姓名">xxxx</prop>
            <prop key="性别">nv</prop>
        </props>
    </property>
使用多个XML配置文件

方式一 可以在创建ApplicationContext对象时传入多个配置文件
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext(“beans1.xml”, “beans2.xml”);

方式二 可以在配置文件中通过引入其他配置文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值