温州做网站最好的,桂电做网站的毕设容易过嘛,柯桥网站建设,潍坊 网站建设文章目录 5. Spring⼯⼚创建复杂对象5.1 什么是复杂对象5.2 Spring⼯⼚创建复杂对象的3种⽅式5.2.1 FactoryBean 接口5.2.2 实例⼯⼚5.2.3 静态工厂 5.3 Spring 工厂的总结 6. 控制Spring⼯⼚创建对象的次数6.1 如何控制简单对象的创建次数6.2 如何控制复杂对象的创建次数6.3 为… 文章目录 5. Spring⼯⼚创建复杂对象5.1 什么是复杂对象5.2 Spring⼯⼚创建复杂对象的3种⽅式5.2.1 FactoryBean 接口5.2.2 实例⼯⼚5.2.3 静态工厂 5.3 Spring 工厂的总结 6. 控制Spring⼯⼚创建对象的次数6.1 如何控制简单对象的创建次数6.2 如何控制复杂对象的创建次数6.3 为什么要控制对象的创建次数 5. Spring⼯⼚创建复杂对象 5.1 什么是复杂对象
复杂对象指的就是不能直接通过 new 构造⽅法创建的对象
ConnectionSqlSessionFactory 5.2 Spring⼯⼚创建复杂对象的3种⽅式
5.2.1 FactoryBean 接口 开发步骤 实现FactoryBean接⼝ Spring配置⽂件的配置
# 如果Class中指定的类型 是FactoryBean接⼝的实现类那么通过id值获得的是
这个类所创建的复杂对象 Connection
bean idconn classcom.snow.factorybean.ConnectionFactoryBean/细节 如果就想获得 FactoryBean 类型的对象ctx.getBean(“conn”) 获得就是 ConnectionFactoryBean 对象isSingleton⽅法 返回 true 只会创建⼀个复杂对象 返回 false 每⼀次都会创建新的对象 问题根据这个对象的特点 决定是返回true (SqlSessionFactory) 还是 false (Connection)
依赖注⼊的体会(DI) 把 ConnectionFactoryBean 中依赖的4个字符串信息 进⾏配置⽂件的注⼊ 好处解耦合 bean idconn classcom.snow.factorybean.ConnectionFactoryBeanproperty namedriverClassName valuecom.mysql.jdbc.Driver/property nameurl valuejdbc:mysql://localhost:3306/suns?useSSLfalse/property nameusername valueroot/property namepassword value123456/
/beanFactoryBean的实现原理[简易版]
接⼝回调 为什么Spring规定FactoryBean接⼝ 实现 并且 getObject()? ctx.getBean(“conn”) 获得是复杂对象 Connection ⽽没有 获得 ConnectionFactoryBean()
Spring内部运⾏流程
通过conn获得 ConnectionFactoryBean类的对象 进⽽通过instanceof 判断出是FactoryBean接⼝的实现类Spring按照规定 getObject() — Connection返回Connection FactoryBean总结
FactoryBean是Spring中⽤于创建复杂对象的⼀种⽅式也是Spring原⽣提供的后续讲解Spring整合其他框架⼤量应⽤到 FactoryBean 。
5.2.2 实例⼯⼚
避免Spring框架的侵⼊整合遗留系统
开发步骤
bean idconnFactoryclasscom.snow.factorybean.ConnectionFactory/bean
bean idconn factory-beanconnFactory factory-methodgetConnection/5.2.3 静态工厂
开发步骤
bean idconnclasscom.snow.factorybean.StaticConnectionFactory factory-methodgetConnection/5.3 Spring 工厂的总结 6. 控制Spring⼯⼚创建对象的次数
6.1 如何控制简单对象的创建次数
bean idaccount scopesingleton|prototype classxxxx.Account/sigleton: 只会创建⼀次简单对象 默认值 prototype: 每⼀次都会创建新的对象
6.2 如何控制复杂对象的创建次数
FactoryBean{isSingleton(){//return true 只会创建⼀次return false 每⼀次都会创建新的}
}
# 如没有isSingleton⽅法 还是通过scope属性 进⾏对象创建次数的控制6.3 为什么要控制对象的创建次数
好处节省不必要的内存浪费
什么样的对象只创建一次
SqlSessionFactoryDAOService
什么样的对象 每一次都要创建新的
ConnectionSqlSession | SessionStruts2 Action
开发步骤
bean idconnclasscom.snow.factorybean.StaticConnectionFactory factory-methodgetConnection/