# 加载 properties 文件

当有多个 properties 配置文件需要被加载,该如何配置?

applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 方式一 -->
    <context:property-placeholder location="jdbc.properties,jdbc2.properties" system-properties-mode="NEVER"/>
    <!-- 方式二 -->
    <context:property-placeholder location="*.properties" system-properties-mode="NEVER"/>
    <!-- 方式三 -->
    <context:property-placeholder location="classpath:*.properties" system-properties-mode="NEVER"/>
    <!-- 方式四 -->
    <context:property-placeholder location="classpath*:*.properties" system-properties-mode="NEVER"/>
</beans>
  • 方式一:可以实现,如果配置文件多的话,每个都需要配置
  • 方式二: *.properties 代表所有以 properties 结尾的文件都会被加载,可以解决方式一的问题,但是不标准
  • 方式三:标准的写法, classpath: 代表的是从根路径下开始查找,但是只能查询当前项目的根路径
  • 方式四:不仅可以加载当前项目还可以加载当前项目所依赖的所有项目的根路径下的 properties 配置文件

如何开启 context 的命名空间?

1629980280952

如何加载 properties 配置文件?

applicationContext.xml
<context:property-placeholder location="" system-properties-mode="NEVER"/>

如何在 applicationContext.xml 引入 properties 配置文件中的值?

applicationContext.xml
${key}

# 核心容器

# 创建方式

  • 类路径下的 XML 配置文件

    ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  • 文件系统下的 XML 配置文件

    ApplicationContext ctx = new FileSystemXmlApplicationContext("applicationContext.xml");

# bean 获取方式

  • 方式一:

    BookDao bookDao = (BookDao) ctx.getBean("bookDao");
  • 方式二:

    BookDao bookDao = ctx.getBean("bookDao"BookDao.class);
  • 方式三:

    BookDao bookDao = ctx.getBean(BookDao.class);

# 容器类层次结构

(1)在 IDEA 中双击 shift , 输入 BeanFactory

1629985148294

(2)点击进入 BeanFactory 类, Ctrl+h ,就能查看到如下结构的层次关系

1629984980781

  • BeanFactory 是延迟加载,只有在获取 bean 对象的时候才会去创建

  • ApplicationContext 是立即加载,容器加载的时候就会创建 bean 对象

  • ApplicationContext 要想成为延迟加载,只需要按照如下方式进行配置

    applicationContext.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"  lazy-init="true"/>
    </beans>

# bean 相关

1629986510487

# 依赖注入相关

1629986848563

# 注解开发

# 定义 bean

XML 与注解配置的对应关系:

1629990315619

@Component 注解不可以添加在接口上,因为接口是无法创建对象的。

# 知识点 1:@Component 等

名称@Component/@Controller/@Service/@Repository
类型类注解
位置类定义上方
作用设置该类为 spring 管理的 bean
属性value(默认):定义 bean 的 id

#

  • 记住 @Component、@Controller、@Service、@Repository 这四个注解
  • applicationContext.xml 中 <context:component-san/> 的作用是指定扫描包路径,注解为 @ComponentScan
  • @Configuration 标识该类为配置类,使用类替换 applicationContext.xml 文件
  • ClassPathXmlApplicationContext 是加载 XML 配置文件
  • AnnotationConfigApplicationContext 是加载配置类
# 知识点 1:@PostConstruct
名称@PostConstruct
类型方法注解
位置方法上
作用设置该方法为初始化方法
属性
# 知识点 2:@PreDestroy
名称@PreDestroy
类型方法注解
位置方法上
作用设置该方法为销毁方法
属性

1630033039358

# 知识点 1:@Autowired

名称@Autowired
类型属性注解 或 方法注解(了解) 或 方法形参注解(了解)
位置属性定义上方 或 标准 set 方法上方 或 类 set 方法上方 或 方法形参前面
作用为引用类型属性设置值
属性required:true/false,定义该属性是否允许为 null

# 知识点 2:@Qualifier

名称@Qualifier
类型属性注解 或 方法注解(了解)
位置属性定义上方 或 标准 set 方法上方 或 类 set 方法上方
作用为引用类型属性指定注入的 beanId
属性value(默认):设置注入的 beanId

# 知识点 3:@Value

名称@Value
类型属性注解 或 方法注解(了解)
位置属性定义上方 或 标准 set 方法上方 或 类 set 方法上方
作用为 基本数据类型 或 字符串类型 属性设置值
属性value(默认):要注入的属性值

# 知识点 4:@PropertySource

名称@PropertySource
类型类注解
位置类定义上方
作用加载 properties 文件中的属性值
属性value(默认):设置加载的 properties 文件对应的文件名或文件名组成的数组

#

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Mr.Song 微信支付

微信支付

Mr.Song 支付宝

支付宝