0%

Bean的装配(一)

Autowiring(自动装配)

  • **No(default):**不做任何操作
  • **byName:**根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的 bean,并将其与属性自动装配
  • **byType(@Autowired注解就为该属性):**如果容器中存在一个与指定属性类型相同的 bean,那么将与该属性自动装配;如果存在多个该类型bean,那么抛出异常,并指出不能使用 byType 方式进行自动装配;如果没有找到相匹配的bean,则什么事都不发生
  • **constructor:**与 byType 方式类似,不同之处在于它应用于构造器参数。如果容器中没有找到与构造器参数类型一致的 bean,那么抛出异常
1
2
3
4
5
6
7
8
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-autowire="no/byName/byType/constructor">
<!---------------配置上面这个default-autowire属性即可----------------->

Resources(针对于资源文件的统一接口)

  • Resources分类

    • UrlResource:URL对应的资源,根据一个URL地址即可构建
    • ClassPathResource:获取类路径下的资源文件
    • FileSystemResource:获取文件系统里面的资源
    • ServletContextResource:ServletContext封装的资源,用于访问ServletContext环境下的资源
    • InputStreamResource:针对于输入流封装的资源
    • ByteArrayResource:针对于字节数组封装的资源
  • ResourceLoader接口(用于加载Resource)

    All application contexts implement the ResourceLoader interface,and therefore all application contexts may be used to obtain Resource instances.

    所有的 application contexts 都实现了 ResourceLoader 接口
    也就是说,所有的 application contexts 都可以用来获取 Resource 实例

1
2
3
4
5
6
7
8
9
10
11
12
//ResourceLoader接口的声明
public interface ResourceLoader{
Resource getResource(String location);
}
//这个路径依赖于 application contexts 的路径
Resource template = ctx.getResource("some/resource/path/myTemplate.txt");

//下面这一个是作为URL加载
Resource template = ctx.getResource("file:/some/resource/path/myTemplate.txt");

Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt")
Resource template = ctx.getResource("http://webpath/myTemplate.txt")