Spring配置文件方式

Spring Framework(Spring框架)

EJB思想(企业级javaBean)–>Spring1.0(通过配置文件的方式管理bean)–>Spring3.0注解成熟–>Spring5.0只支持java1.8以上

core Container(核心容器)

  • bean
  • Core
  • Context
  • Expression Language
所需要的jar包

导入依赖

   Spring核心
   <dependency> 
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>

它包含的jar包有
在这里插入图片描述

IOC(控制反转)

通过IOC对程序的bean进行创建消除,而不是自己new

IOC容器
容器接口实现类过程

在这里插入图片描述
上层接口:
在这里插入图片描述

加载容器的方式:

1.通过类路径下的方式进行加载
2.通过文件系统的位置进行加载

//注意第二个通过文件位置这里需要填写的为本地全路径,耦合高不建议使用
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext2.xml");
        ApplicationContext ctx2 = new FileSystemXmlApplicationContext("D:\\000JavaAbout\\workplace\\Spring_Use\\src\\main\\resources\\applicationContext.xml");
bean
创建bean的方式
  1. 通过容器获取
//获取容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContextuse.xml");
        //获取bean 第一个是通过id,第二个是指定出引用类型,第三是按类型获取bean
        BookService bookService = (BookService) ctx.getBean("bookServiceImpl");
        BookService bookService1 = ctx.getBean("bookServiceImpl", BookServiceImpl.class);
        BookService bookService2 = ctx.getBean(BookServiceImpl.class);
  1. 通过静态工厂获取bean
//在静态工厂中定义一个获取bean的方法
public static BookDaoImpl getBookDao(){
            return new BookDaoImpl();
        }
        //xml中定义一个工厂 ,指定工厂的方法
<bean id="factroy" class="cn.dao.factory.BookStaticDaoFactory" factory-method="getBookDao">
 // 调用工厂获取实例化对象
   BookDao  bookDao= (BookDao) ctx.getBean("factory"); //这里获取的bean是xml中的id值
      //调用实例化对象方法
        bookDao.save();
  1. 实例化工厂
//通过实现factorybean配置标准化工厂 
public class BookDaoFactoryBean implements FactoryBean<BookDao> {

    @Override
    public BookDao getObject() throws Exception {
        return new BookDaoImpl();
    }

    @Override
    public Class<?> getObjectType() {
        return BookDao.class;
    }
}

//xml配置
<bean id="FactoryBean" class="cn.dao.factory.BookDaoFactoryBean" />
//调用
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext1.xml");
        //获取实例化对象
        BookDao  v = (BookDao) ctx.getBean("FactoryBean"); //这里获取的bean是xml中的id值
        //调用实例化对象方法
        v.save();

bean DI的标签

在这里插入图片描述
在这里插入图片描述

 <!--id为bean的唯一标识 name为bean的别名,scope用来指定是否为单例,默认为单例模式,class用来指定哪个类 lazy-init是否进行懒加载,在需要getbean()时才会进行加载,而不是容器初始化的时候-->
    <bean id="bookServiceImpl" name="bookDaoImpl1,bookDaoImpl2" scope="singleton"
          class="cn.service.impl.BookServiceImpl" init-method="afterPropertiesSet"
          destroy-method="destroy" lazy-init="true"
    >
     <!-- 属性中可以是引用类型,集合,不能是基本数据类型(可以使用包装类)都是通过setter注入的方式-->
     <!-- 这里是String类型,这里的name需要和变量名相同,value实行赋值-->
        <property name="conn" value="com.jdbc.connection" ></property>
     <!--这里传入的是一个成员bean类型 ref是指向当前容器中的哪个bean-->
        <property name="bookDao" ref="bookDaoImpl"/>
     <!-- 这里传入的是集合类型-->
        <property name="arrays">
           <array>
               <value>a</value>
               <value>aa</value>
               <value>aaa</value>
               <value>aaaa</value>
           </array>
        </property>
        <property name="maps">
            <map>
                <entry key="map" value=""/>
                <entry key="map" value=""/>
                <entry key="map" value=""/>
                <entry key="map" value=""/>
            </map>
        </property>

    </bean>
    <bean  class="cn.service.impl.BookServiceImpl" >
        <!-- 构造器进行传引用类型 name为形参的名称,这里耦合度比较高 ,可以通过type解耦 当两个type相同时,可以通过index表示形参位置-->
        <constructor-arg name="bookDao"  ref="bookDaoImpl"/>
    </bean>


通过properties文件给bean属性赋值${}
  • 首先需要开启命名空间
  • 然后扫描文件位置
  • 使用${}进行value赋值
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/students
jdbc.username=root
jdbc.password=root
xmlns:context="http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context    
http://www.springframework.org/schema/context/spring-beans.xsd
<!--       系统属性值读取不开, location值可以加载多个-->
        <context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
<!--                这里第一个*代表可以读取项目外导入的jar包中的文件,第二个*代表扫描项目下src下和resources下全部的properties文件-->
        <context:property-placeholder location="classpath*:*.properties" system-properties-mode="NEVER"/>

<!--通过${}进行value值进行赋值-->
 <bean id="DataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值