zoukankan      html  css  js  c++  java
  • spring学习 十六 spring加载属性文件

    第一步:创建一个properties文件,以数据库链接作为实例db.properties

    jdbc.url=jdbc:mysql://192.168.153.128:3306/mybaties?characterEncoding=utf-8
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.username=com.mysql.jdbc.Driver
    jdbc.password=123456

    第二步在spring配置文件加入context的约束,并使用<context:property-placeholder/>标签加载配置文件,多个配置文件用逗号隔开

     <context:property-placeholder location="classpath:applicationContext.xml"/>

    第三步把db.properties文件中的内容读入到 封装数据的类的属性中

        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
                   <property name="driverClassName" value="${jdbc.driver}"></property>
                   <property name="url" value="${jdbc.url}"></property>
                   <property name="username" value="${jdbc.username}"></property>
                   <property name="password" value="${jdbc.password}"></property>
           </bean>

    第四步:根从配置文件中读入的数据源,配置一个sqlSessionFactory  bean

     <!-- 配置sqlSessionFactory -->
        <!-- sqlSessionFactory ,注册sqlSession工厂-->
         <bean id="sessionFactory">
             <!--dataSource的类型是DataSource是一个接口,上面配置的DriverManagerDataSouce类实现了DataSource接口  -->
             <property name="dataSource" ref="dataSource"></property>
             <!-- 设置别名 -->
             <property name="typeAliasesPackage" value="com.spring.pojo"></property>
         </bean>

     第五步:配置一个用于扫描mybatis  的mapper.xml的配置文件以及扫描xxxMapper.java接口的扫描器,目的是利用cglib动态代理生成实现xxxMapper.java接口的类

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                <property name="basePackage" value="com.spring.mapper" ></property>
                <!-- <property name="sqlSessionFactory" ref="factory"></property> -->
                <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    
      </bean>

       此时要注意一个问题就是在配置mybatis扫描mapper文件时,需要注意,不要使用MapperScannerConfigurer类的sqlSessionFactory属性,使用sqlSessionFactoryBeanName属性。因为使用sqlSessionFactory属性,这个属性要求注入的是一个实例化的bean,因为采用的是读取配置文件,此时数据源只是刚读取到内容还没有实例化SqlSessionFactory工厂对象,因此无法对sqlSessionFactory属性进行注入,会包bean不存在错误,而sqlSessionFactoryName,此时MapperScannerConfigurer类只要求注入一个字符串即可——也就是只要传入一个bean的id就行,后续需要的时在注入。原因就是加载配置文件比较晚,SqlSessionFactory中的好多属性还没有被注入

    在被Spring管理的类中的属性,可以通过@Value(“${key}”)取出properties文件中的内容来对被spring管理的类的属性赋值

    (1) 添加注解扫描

    <context:component-scan base-package="com.bjsxt.service.impl"></context:component-scan>
     

    (2)在类中添加   key 和变量名可以不相同,变量类型任意,只要保证 key 对应的 value 能转换成这个类型就可以.

    @Value("${my.demo}")
    private String test;
  • 相关阅读:
    go-zero尝试运行输出hello-world
    grpc客户端 服务端测试
    protobuf序列化
    protobuff3语法详情
    【转】普通程序员如何转向AI方向
    深度学习微软 azure-云服务器组 centos特殊内核版本 gpu NVIDIA 驱动及CUDA 11.0安装
    分享一个主要用于nas场景的集成了迅雷,百度网盘等软件的docker ubuntu vnc镜像-适用于x86环境
    以spark sql 维护spark streaming offset
    打通es及lucene应用,lucene应用es Query,应用完整的es query
    打通es及lucene应用,lucene应用es Query,结合非queryString查询(二)
  • 原文地址:https://www.cnblogs.com/cplinux/p/9745071.html
Copyright © 2011-2022 走看看