IoC容器简介
Spring IoC 容器是一个管理Bean的容器, 在Spring的定义种, 他要求所有的IoC容器都必须实现接口BeanFactory , 他是一个顶级容器管理接口。以下是源码:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package org.springframework.beans.factory;
import org.springframework.beans.BeansException;
public interface BeanFactory {
//前缀
String FACTORY_BEAN_PREFIX = "&";
//多个getBean 方法
Object getBean(String var1) throws BeansException;
<T> T getBean(String var1, Class<T> var2) throws BeansException;
<T> T getBean(Class<T> var1) throws BeansException;
Object getBean(String var1, Object... var2) throws BeansException;
//判断是否包含Bean
boolean containsBean(String var1);
//Bean是否是实例的
boolean isSingleton(String var1) throws NoSuchBeanDefinitionException;
//Bean是否是原型
boolean isPrototype(String var1) throws NoSuchBeanDefinitionException;
//判断是否类型匹配
boolean isTypeMatch(String var1, Class<?> var2) throws NoSuchBeanDefinitionException;
//判断Bean的类型
Class<?> getType(String var1) throws NoSuchBeanDefinitionException;
//获取Bean的别名
String[] getAliases(String var1);
}
在这里我们可以看到所有的getBean 方法有很多种, 这个是IoC容器的最重要的方法之一, 我们可以看到有按照类型 byType,按照name的byName , 这就意味着在Spring IoC容器中 , 我们可以按照类型或者名字获取Bean。
isSingleton方法是判断Bean是否在Spring IoC 中为单例,需要记住的是,在Spring IoC中,默认的情况下,Bean 都是单例存在的,也就是说使用getBean 方法返回的都是同一个对象,isSingleton方法相反的是isPrototype方法, 如果它返回的是true, 那么当我们使用getBean 方法获取Bean 对象的时候, Spring IoC容器就会创建一个新的Bean返回给调用者。
装配你的Bean
Spring允许我们进行扫描装配Bean 到IoC 容器中, 对于扫描装配而言使用的注解是 @Component 和 @ComponentScan .
@Component 是标明哪个类被扫描进入Spring IoC 容器中。
@ComponentScan 是标明采用何种策略去扫描装配Bean。
使用属性文件
属性文件需要引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>true</version>
</dependency>
常规配置
- server.port=8080 – wen容易端口号
- server.error.path=/error --配置当前项目出错后跳转的页面
- server.servlet.session.timeout=30m – 设置session 的失效时间,30m表示30分钟,如果不写单位,默认单位是秒。
- server.servlet.context-path=/chapter02 – 配置项目名称,默认是 / ,如果配置,则在访问路径上要加上该路径
- server.tomcat.uri-encoding=utf-8 – 配置tomcat的访问编码
- server.tomcat.max-threads=500 – 设置tomcat 的最大线程数
- server.tomcat.basedir=/home/sang/tmp --basedir是存放Tomcat运行日志和临时文件的目录,如果不配置,则默认使用系统中临时文件。
- server.ssl.key-store=sang.p12 – 表示密钥文件名
- server.ssl.key-alis=tomcathttps – 密钥别名
- server.ssl.key-store-password=12345 – 密码
- server.servlet.multipart.enable = true – true 表示开启多文件上传
- server.servlet.multipart.file-size-threshold=0 – 设置文件写入磁盘的阈值,默认为0
- server.servlet.multipart.location=E:\temp – 设置上传文件的临时存储位置
- server.servlet.multipart.max-file-size=1MB – 设置文件上传的最大大小 ,默认1MB
- server.servlet.multipart.max-request-size=10MB – 设置文件上传时的总大小,默认10MB
- server.servlet.multipart.resolve-lazily=false --设置文件是否延迟解析, 默认是false
静态资源
spring Boot中默认会过滤所有的静态资源,静态资源的位置一共有5个,分别是:
classpath:/META-INF/resource/
classpath:/resource/
classpath:/static/
classpath:/public/
/
开发者可以将静态资源文件放在上面5个文件夹中任意一个,这5个静态资源位置的优先级依次降低。一般情况下,springboot 项目不需要webapp目录,所以第5个 “/” 暂时不考虑。