SpringIoC及JdbcTemplate

自定义属性编辑器
Spring配置文件中的字符串转换成相应的对象进行进行注入,spring已经内置了属性编辑器,我们可以根据需求自定义属性编辑器

如何定义属性编辑器?
    继承PropertyEditorSupport类,重写setAsText方法。
    




多配置文件加载
如果配置文件存在多个的情况下,加载配置文件的方式是:
1--可以指定总的配置文件去包含子的配置文件,然后只加载总的配置文件即可
    在总配置文件中 eg:applicationContext.xml 引入子文件
    <import resource="applicationContext-action.xml"/>
    <import resource="applicationContext-dao.xml"/>
    
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    
2--使用*来匹配多个文件进行家人在,文件名称要符合规律  (推荐使用)
    多个配置文件为:
    applicationContext-global.xml       ---- 全局配置文件
    applicationContext-user.xml        ----用户模块配置文件
    applicationContext-product.xml    ----商品模块配置文件
    
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-*.xml");
    
3--可以使用数组作为参数,一次性加载多个配置文件
    String[] files = new String[4] ;
    String[] files = new String[]{} ;
    String[] files =     {
                        "applicationContext-user.xml" ,
                        "applicationContext-cart.xml" ,
                        "applicationContext-order.xml"
                        };
    ApplicationContext ac = new ClassPathXmlApplicationContext(files);
    
    
    
    
    ------------------------------------------------------------------------------
    Spring IOC 中 bean的生命周期
    创建一个Person类 实现相应的接口 eg: BeanNameAware , BeanFactoryAware , ApplicationContextAware , InitializingBean
    实现各个接口的相应方法,就可以在bean实例创建完成之后进行相应的逻辑处理,例如:日志记录 、 销毁元素 .....
    
    在spring IOC 容器中配置 BeanPostProcessor的实现类 ,达到在spring初始化bean过程中,处理各种辅助功能
    eg:
    public class InitBeanPostProcessor implements BeanPostProcessor {
        @Override
        public Object postProcessAfterInitialization(Object obj, String str)
                throws BeansException {
            System.out.println("postProcess---After---Initialization--" +  obj +"----" + str);
            return obj;
        }
        @Override
        public Object postProcessBeforeInitialization(Object obj, String str)
                throws BeansException {
            System.out.println("postProcess---Before---Initialization--" +  obj +"----" + str);
            return obj;
        }
    }
            
    配置:
        <!--
         这是一个bean初始化后置处理器 实现的是BeanPostProcessor接口 实现了其两个方法
        当bean被初始化的时候,就会被调用 调用顺序请参照案例 运行结构
         -->
        <bean class="com.spring.day02.life.InitBeanPostProcessor"></bean>
    
    
    
--------------------------------------------------------------------------------------
Spring中数据库技术--获得DataSource

第一种:JNDI获得DataSource(对服务的种类有一定的依赖)

第二种:第三方连接池获得DataSource
    A:Apache的DBCP方式
        需要支持的jar包有两个 commons-dbcp2-2.1.1.jar    commons-pool2-2.4.2.jar
        详情请参考 案例

    B:C3P0方式
    
    
第三种:Spring的DirverManagerDataSource方式(生产环境不用,测试环境可以使用)


--------------------------------------------------------------------------------------
spring的数据库技术---辅助类 JdbcTemplate
    JdbcTemplate 是一个辅助类 ,他封装了JDBC的操作,非常方便。
    使用模板方式封装jdbc数据库操作,固定的流程操作,提供丰富的callback回调接口功能,方便用户自定义加工细节,
    更好模块化jdbc操作,简化传统JDBC操作的复杂和繁琐过程。
    
Sring的JdbcTemplate配置
    JdbcTemplate的使用需要DataSource的支持,所以在配置文件中,我们首先要配置一个DataSource,
    然后再将这个DataSource配置到JdbcTemplate中。最后将JdbcTemplate配置到DAO层
    
步骤:
1--增加导入两个jar包
    spring-jdbc-4.2.1.RELEASE.jar
    spring-tx-4.2.1.RELEASE.jar
2--在spring配置文件中,配置DataSource
3--配置jdbcTemplate
4--配置userDAO
5--写测试类

-------另外一种获取jdbcTemplate的方式-------------
继承JdbcDaoSupport方式
    Spring提供了org.springframework.jdbc.core.JdbcDaoSupport类,其中定义了JdbcTemplate属性,也定义了DataSource属性。
    当设置了DataSource属性的时候,会创建jdbcTemplate实例。所以自己编写的DAO只需要继承JdbcDaoSupport类,然后注入DataSource即可



posted @ 2015-10-18 09:16  Tsoi  阅读(170)  评论(0)    收藏  举报