Spring应用扩展

2023-05-04 19:26:09 浏览数 (1)

Spring应用扩展

Bean的作用域

作用域

说 明

singleton

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

prototype

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

request

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

session

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

global session

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

代码语言:javascript复制
<bean id="……" class="……" scope="prototype">
    ……
</bean>
​

@Scope

作用

指定Bean的作用域

默认值singleton(単例)

代码语言:javascript复制
@Scope("prototype") 
@Service("userService") 
public class UserServiceImpl implements UserService {
    // 省略其他代码
}
​

自动装配

取值

说明

no

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

byName

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

byType

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

constructor

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

单个设置

代码语言:javascript复制
<bean id="userService" class="cn.smbms.service.user.UserServiceImpl"
    autowire="byName" />

整体设置

代码语言:javascript复制
<beans …… default-autowire="byName">
    <!--省略其他代码-->
</beans>

拆分配置文件

两种方法

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

代码语言:javascript复制
public ClassPathXmlApplicationContext( String  configLocation );
public ClassPathXmlApplicationContext( String…  configLocations );

使用<import resource="xxx.xml"/>方式

0 人点赞