【使用SSM框架开发企业级应用】Spring配置补充

Spring配置补充

灵活配置DataSource

使用属性文件配置数据源

数据库连接信息写在属性文件中

采用PropertyPlaceholderConfigurer可以引入属性文件,在Spring配置文件中采用诸如${url}的方式引用属性值

<!-- 引入properties文件 -->

<bean class="org.springframework.beans.factory.config

                 .PropertyPlaceholderConfigurer">

<property name="location">

<value>classpath:database.properties</value>

</property>

</bean>

${……}的前后不要键入空格,以免报错!

 

使用JNDI数据源

通过JNDI从服务器容器中获取DataSource资源

在服务器环境中配置数据源

在Spring配置文件引用JNDI资源

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

        <!--通过jndiName指定引用的JNDI数据源名称 -->

        <property name="jndiName">

            <value>java:comp/env/jdbc/smbms</value>

        </property>

</bean>

Spring中Bean的作用域

Bean的作用域

作用域

说      明

singleton

默认值。Spring以单例模式创建Bean的实例,即容器中该Bean的实例只有一个

prototype

每次从容器中获取Bean时,都会创建一个新的实例

request

用于Web应用环境,针对每次HTTP请求都会创建一个实例

session

用于Web应用环境,同一个会话共享同一个实例,不同的会话使用不同的实例

global session

仅在Portlet的Web应用中使用,同一个全局会话共享一个实例。对于非Portlet环境,等同于session

singleton与prototype区别:

使用@Scope注解指定Bean的作用域

@Scope("prototype")

@Service("userService")

public class UserServiceImpl implements UserService {

// 省略其他代码}

Spring自动装配

什么是自动装配

<!-- 配置业务Bean并注入DAO实例 -->

<bean id="userService"       class="cn.smbms.service.user.UserServiceImpl">

    <property name="userMapper" ref="userMapper" />

</bean>

Spring可以根据属性类型、名称等自动进行注入

如何使用自动装配

设置<bean>元素的autowire属性

<!-- 配置业务Bean,根据属性名称自动装配 -->

<bean id="userService" class="cn.smbms.service.user.UserServiceImpl"

    autowire="byName" />

Spring提供的4种自动装配类型

Autowirte属性值

取值

说明

 no

默认值。Spring 默认不进行自动装配,必须显式指定依赖对象 

 byName

根据属性名自动装配。Spring 自动查找与属性名相同的id,如果找到,则自动注入,否则什么都不做

 byType

根据属性的类型自动装配。Spring 自动查找与属性类型相同的Bean,如果刚好找到唯一的那个,则自动注入;如果找到多个与属性类型相同的Bean,则抛出异常;如果没找到,就什么也不做

 constructor

和byType 类似,不过它针对构造方法。如果 Spring 找到一个Bean和构造方法的参数类型相匹配,则通过构造注入该依赖对象;如果找不到,将抛出异常 

【注意】

自动装配使得配置文件可以非常简洁,但同时也造成组件之间的依赖关系不明确,容易引发一些潜在的错误,在实际项目中要谨慎使用

拆分配置文件

为什么需要拆分配置文件

项目规模变大,配置文件可读性、可维护性差

团队开发时,多人修改同一配置文件,易发生冲突

拆分策略

公用配置+每个系统模块一个单独配置文件(包含DAO、Service、Web控制器)

公用配置+DAO Bean配置+业务逻辑Bean配置+Web控制器配置

两种策略各有特色,适用于不同场合

拆分方法

利用ClassPathXmlApplicationContext 的重载方法可以配置多个配置文件,用逗号隔开或者使用通配符

Public ClassPathXmlApplicationContext( String  configLocation );

public ClassPathXmlApplicationContext( String…  configLocations );

以String[ ]方式传入多个配置文件名

  • 使用PropertyPlaceholderConfigurer可以加载属性文件,实现更灵活的配置
  • Spring可以从环境中获取JNDI资源
  • Spring中配置Bean组件时,可以指定singleton、prototype、request、session、global、session几种不同的作用域,其中singleton是默认采用的作用域类型
  • Spring提供了自动装配autowirte功能,常用方式包括byName和byType

配置多个配置文件,可以通过数组方式或使用通配符(*)加载,也可以在Spring主配置文件中使用使用

<import  resource="xxx.xml"/>方式引入多个配置文件

 

 

 

 

 

内容就到这,

我是陈恰恰.77

猜你喜欢

转载自blog.csdn.net/qq_41770735/article/details/82872915