美文网首页Java后端
【Spring】应用扩展

【Spring】应用扩展

作者: 大数据阶梯之路 | 来源:发表于2019-02-03 23:33 被阅读6次

    一、多种方式配置数据源

    1、通过引入自定义properties属性文件的方式,可使DataSource的可配置性更强,更便于维护。如下就是经常使用的jdbc.properties,用来配置连接mysql。

    driverClassName=com.mysql.jdbc.Driver
    validationQuery=SELECT 1
    jdbc_url=jdbc:mysql://localhost:3306/work_attendance?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    jdbc_username=root
    ......
    

    注意:properties文件中“=”号前后一般不加空格,还有“=”号后面不加“”号,比如validationQuery=“SELECT 1”是错误的。
    引用jdbc.properties 的两种方式书写如下(个人喜欢第二种):

    <!-- 01.让Spring去寻找jdbc.properties -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:jdbc.properties"></property>
    </bean>
    <!-- 02.让Spring去寻找jdbc.properties -->
    <context:property-placeholder location="classpath:jdb.properties"/>
    

    2、通过spring对JNDI数据源的支持,当我们使用应用服务器本身提供的数据源就派上用场了,因为应用服务器的数据源是使用JNDI方式供使用者调用。
    JNDI是什么?JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。关于JNDI的详解请看这里

    二、Bean的五个作用域

    在Spring中除了定义bean、创建bean、注入属性到bean等,还可以为定义的bean指定一个作用域,这个作用域的取值决定了spring创建该组件实例的策略,从而影响程序的运行效率和数据安全。

    作用域 说明
    singleton 默认值。以单例模式创建Bean的实例,即容器中该Bean的实例只有一个
    prototype 每次从容器中获取Bean时,都会创建一个新的实例
    request 用于web应用环境,针对每次HTTP请求都会创建一个实例
    session 用于web应用环境,同一个会话共享同一个实例,不同会话使用不同实例
    global session 仅在Portlet的web应用中使用,同一个全局会话共享一个实例。对应非Portlet环境,等同于session
    具体使用如下:
    <bean id="..." class="..." scope="prototype">
          ......
    </bean>
    

    另外,曾经提到@Autowired注解可以实现自动装配属性,而基于XML配置Spring的方式也可以实现自动装配,即在XML配置文件中,通过<bean>元素的autowire属性可以实现自动装配。但是当Bean多了起来的时候,配置起来也会很繁琐,所以我们可以设置全局自动装配,简化维护单个Bean的注入方式。

    autowire属性值 说明
    no 不使用自动装配
    byType 通过属性类型自动装配
    byName 通过属性名自动装配
    constructor 与byType类似,不同之处在于它应用于构造器参数

    tips:对于大型应用,不鼓励使用自动装配,因为虽减少了配置工作量,但却降低了依赖关系的清晰性。

    三、配置文件的拆分策略和拆分方法

    当项目规模比较大时,庞大的Spring配置文件就显得可读性和可维护性差了一些,于是我们可以把配置文件进行分解,每个配置文件仅仅配置功能近似的Bean。
    两种拆分策略:

    • 1、若一个开发人员负责一模块,则采用公用配置(包含数据源、事务)+每个系统模块一个单独配置文件(包含dao、service、web控制器)的形式。
    • 2、若开发是按分层分工的,则采用公用配置(包含数据源、事务)+daobean配置+业务逻辑bean配置+web控制器配置的形式。
      拆分后如何组合起多个配置文件?如下:
    //方式一,逐个加载进来
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml",
                                       "applicationContext-dao.xml",
                                       "applicationContext-service.xml");
    ......
    //方式二,采用通配符*匹配一定规律的命名规则的配置文件
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext*.xml");
    ......
    //方式三,可通过在一个xml文件中import其他xml文件组合起来。
    比如在applicationContext.xml配置文件中
    <import resouce="applicationContext-dao.xml" />
    这样就把applicationContext-dao.xml和applicationContext.xml组合起来了。
    

    相关文章

      网友评论

        本文标题:【Spring】应用扩展

        本文链接:https://www.haomeiwen.com/subject/eupusqtx.html