首页 > 其他分享 >2022-09-30 数据源对象,容器

2022-09-30 数据源对象,容器

时间:2022-09-30 10:44:05浏览次数:52  
标签:容器 09 ApplicationContext 数据源 30 bean properties 加载

目录

spring

数据源对象管理

DruidDataSource

  • 导入druid坐标
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.5</version>
</dependency>
  • 配置数据源对象作为spring管理的bean
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</bean>

ComboPooledDataSource

  • 导入坐标

mysql也要导入

<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.49</version>
</dependency>
  • 配置数据源对象作为spring管理的bean
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring_db"/>
    <property name="user" value="root"/>
    <property name="password" value="123456"/>
</bean>

加载properties文件

  • 开启context命名空间
<?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
        ">
</beans>
  • 使用context命名空间,加载指定properties文件
<context:property-placeholder location="jdbc.properties"/>
  • 使用${}读取加载的属性值
<property name="name" value="${jdbc.driver}"></property>
  • 不加载系统属性
<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
  • 加载多个properties
<context:property-placeholder location="jdbc.properties,msg.properties" />
  • 加载所有properties文件
<context:property-placeholder location="*.properties"/>
  • 加载properties文件标准格式
<context:property-placeholder location="classpath:*.properties"/>
  • 从类路径或jar包中搜索并加载properties文件
<context:property-placeholder location="classpath*:*.properties"/>

容器

创建容器

  1. 类路径加载配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  1. 文件路径加载配置文件
ApplicationContext ctx = new FileSystemXmlApplicationContext("E:\\workspace\\blbl\\idea\\2022.09.30_container\\src\\main\\resources\\applicationContext.xml");
  1. 加载多个配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean1.xml","bean2.xml");

获取bean

  1. 使用bean名称获取
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
  1. 使用bean名称获取并指定类型
BookDao bookDao = ctx.getBean("bookDap",BookDao.class);
  1. 使用bean类型获取
BookDao bookDao = ctx.getBean(BookDao.class);

核心容器总结

容器相关

  1. BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载
  2. ApplicationContext接口是Spring容器的核心接口,初始化时bean立即加载
  3. ApplicationContext接口提供基础的bean操作相关方法,通过其他接口扩展其功能
  4. ApplicationContext接口常用初始化类
    • ClassPathXmlApplicationContext(常用)
    • FileSystemXmlApplicationContext

bean相关

配置 中文
id="bookDao" bean的Id
name="dao bookDaoImpl daoImpl" bean别名
class="com.itheima.dao.impl.BookDaoImpl" bean类型,静态工厂,FactoryBean类
scope="singleton" 控制bean的实例数量
init-method="init" 生命周期初始化方法
destroy-method="destory" 生命周期销毁方法
autowire="byType" 自动装配类型
factory-method="getInstance" bean工厂方法,应用于静态工厂或实例工厂
factory-bean="com.itheima.factory.BookDaoFactory" 实例工厂bean
lazy-init="true" 控制bean延迟加载

依赖注入相关

构造器注入

<constructor-arg />

setter注入

<property />

标签:容器,09,ApplicationContext,数据源,30,bean,properties,加载
From: https://www.cnblogs.com/lurui711/p/16744122.html

相关文章

  • 【2022.09.30】记录一次mastodon网络故障修复
    前天的时候使用mastodon连不上另外一个站点了,在后台疯狂报错重试我还以为mastodon的docker出问题了,在谷歌和git上面找了好久的问题,愣是没找到相关的原因但奇怪的是,虽然......
  • Java流程控制09(break;continue循环)
    break;continue语句:break在任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)continue语句......
  • P1196&&P5092
    #include<bits/stdc++.h>usingnamespacestd;//边带权并查集classsolve{ public: intT; intfa[30001]; intD[30001]; intd[30001]; intfind(intx) ......
  • 20220930-ArrayList扩容机制源码分析②
    本部分对于使用设置初始容量的方法创建ArrayList集合的方式进行源码分析。代码publicclassArrayListSource{publicstaticvoidmain(String[]args){......
  • AC609实战问题汇总
    1.烧写文件格式:ALTERA的开发板在程序开发过程中,要把程序烧写到FPGA开发板上运行,上版调试,有三种文件格式sof,jic,pof。区别见:【FPGA学习笔记】sof文件和jic文件的区别,程序固......
  • 20220929-ArrayList扩容机制源码分析
    示例代码publicclassArrayListSource{publicstaticvoidmain(String[]args){ArrayListarrayList=newArrayList();//跳转至第一步for......
  • Spring 管理数据源
    Spring管理数据源 不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spring中,数据连接是通过数据源获得的。在以往的应用中,数据源一般是Web应用服务器提供的。在Spri......
  • 【闲话】2022.09.29
    明天就要我值日了啊十分佩服L先生似乎今天他被查到手机了讲题的时候还在睡觉太他妈离谱了今天的考试……几乎都是寄的题解,我要寄了。Clover_BY先生发明了BK......
  • Mybatis(2022-09-29)
    SSMSpringMVC+Spring+Mybatis3SpringMVC:充当的就是Servlet的角色。可以理解为SpringMVC是Spring的WEB支持。1Mybatis:充当的就是Dao层。2Spring:充当的时一个润滑油......
  • maven(2022-09-29)
    Maven:项目构建工具,主流整个项目架构,source,resource,test,testresource依赖:导入的jar包。对项目进行打包。apache基金会作为一个java程序员,有必要连接一下apache的官网命......