zoukankan      html  css  js  c++  java
  • 01Spring配置文件

    Spring

    Spring是分层的full-stack(全栈)轻量级开源框架,以IoC(反转控制)和AOP(面向切面编程)为内核。

    版本:

    • 2017年,发布spring5.0通用版(学习这个)

    Spring优势:

    1. 通过Spring提供的IoC容器,可以将对象间的依赖关系交给spring控制,避免过耦合。
    2. AOP面向切面编程,可以实现比传统OOP更复杂的功能。
    3. 声明式事务的支持,简化事务管理,提高开发效率。
    4. spring可以集成junit,方便测试。
    5. 方便集成各种优秀框架。
    6. 对JavaEE API进行了简单封装,降低了使用难度。如,JDBC等

    Spring程序开发步骤:

    1. 导入spring的jar包(基本包坐标spring-context和测试坐标junit

    2. 编写dao接口和实现类(UserDao, UserDaoImpl)

    3. 创建spring核心配置文件applicationContext.xml,将dao类填写到配置文件

      <?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="userDao" class="com.dao.impl.UserDaoImpl"/>
      </beans>
      
    4. 测试,获取dao对象(通过配置文件)

      ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
      UserDao userDao = (UserDao) app.getBean("userDao");
      userDao.save();
      

    配置文件详解

    放在resources文件加下,名字随意,一般命名为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
            https://www.springframework.org/schema/beans/spring-beans.xsd" >
    
    </beans>
    

    bean标签

    作用:通过bean标签,让Spring返回类对象

    <bean id="userDao" class="dao.impl.UserDaoImpl"></bean>
    

    属性:

    • id:Bean实例的唯一标识
    • class:Bean的权限定名称
    • scope:对象的作用范围
      • singleton 单例:默认值,加载Spring核心文件时,实例化一个对象
      • prototype 多例:调用getBean()方法时,实例化对象(可以实例化多个对象)

    bean实例化

    在配置文件中添加了bean,bean是如何实例化的呢?spring框架实例化bean有三种方式:

    1. 无参构造方式(默认方式)

      ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
      UserDao userDao1 = (UserDao) app.getBean("userDao");
      
    2. 工厂静态方法(先了解即可,不学也行):

      • 创建一个工厂类,里面定义一个静态方法getUserDao(),该方法返回bean实例化对象

        return new UserDaoImpl();

      • 将工厂类添加到配置文件

        <bean id="userDao" class="com.factory.StaticFactory" factory-method="getUserDao"/>

    3. 工厂实例方法(先了解即可,不学也行):

      • 创建一个工厂类,里面定义一个成员方法getUserDao(),该方法返回bean实例化对象。

      • 将工厂类添加到配置文件

        <bean id="factory" class="com.factory.DynamicFactory"/>
        <bean id="userDao" factory-bean="factory" factory-method="getUserDao"/>
        

    bean的依赖注入

    service层可以通过配置文件getBean获取dao层实例对象,也可以直接将dao实例直接注入到service中,不用new或者获取。

    这样就由框架来维护业务层和持久层之间的依赖关系。

    依赖注入是Spring核心IoC的具体体现。

    怎么将UserDao注入到UserService内部?两种方法:

    1. 构造方法
    2. set方法(通用方法,因为JavaBean中都有set方法)

    第一种方式:set方法

    • 创建UserService接口和类,创建其中的set方法:

      private UserDao userDao;
      public void setUserDao(UserDao userDao) {
      	this.userDao = userDao;
      }
      
    • 设置配置文件

      <bean id="userDao" class="dao.impl.UserDaoImpl"></bean>
      <bean id="userService" class="service.impl.UserServiceImpl">
      	<property name="userDao" ref="userDao"></property>
      </bean>
      

    第二种方式:构造方法

    • UserServiceImpl中定义一个有参构造方法

      public UserServiceImpl(UserDao userDao) {
      	this.userDao = userDao;
      }
      
    • 配置文件:

      <bean id="userDao" class="dao.impl.UserDaoImpl"></bean>
      <bean id="userService" class="service.impl.UserServiceImpl">
          <constructor-arg name="userDao" ref="userDao"></constructor-arg>
      </bean>
      

    依赖注入类型

    依赖注入:就是一个类,通过配置文件中的bean标签可以获取实例对象,也可以通过property标签定义其成员变量值。

    上面bean的依赖注入是对象,是引用数据类型,依赖注入一共三种数据类型:

    • 普通数据类型
    • 引用数据类型
    • 集合数据类型

    普通数据类型

    1. 在UserSeviceImpl中定义一个属性private String username;,还有它的set方法;

    2. 在applicationContext.xml配置文件:

      <bean id="userService" class="service.impl.UserServiceImpl">
          <property name="username" value="zhangsan"></property>
      </bean>
      

    集合数据注入

    1. 在UserServiceImpl中定义一个集合属性,还有其set方法

      private List<String> strList;
      
    2. 配置文件:

      <bean id="userService" class="service.impl.UserServiceImpl">
          <property name="strList">
          	<list>
          		<value>aaa<value>
          		<value>bbb<value>
          		<value>ccc<value>
          	</list>
          </property>
      </bean>
      

    引入配置文件

    配置文件中引入其他配置文件(任意位置)

    <import resource="applicationContext-xxx.xml">
    

    配置文件总结

    主要讲了配置文件(学扎实点,以后常用)

    <import>引入其他配置文件
    <bean>通过bean标签获取类对象
    	id:自定义唯一标识符
    	class:全限定类名
    	<property>属性注入,通过set方法
    		name:属性名称
    		value:属性值
    		ref:引用其他bean值
    		<list>列表值
    		<map>集合值
    

    加载配置文件

    ApplicationContext(加载配置文件)的方法:

    • ClassPathXmlApplicationContext:从类的根路径

      ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
      UserDao userDao1 = (UserDao) app.getBean("userDao");
      
    • FileSystemXmlApplicationContext:从磁盘路径(了解即可)

    • AnnotationConfigApplication:当时用注解时使用(以后再学)

    getBean()方法,有两种:

    UserDao userDao1 = (UserDao) app.getBean("userDao");
    UserDao userDao1 = app.getBean(UserDao.class); // 配置文件中只有这一个
    

    配置数据源

    数据源就是连接池,数据源的作用:

    • 提高程序性能
    • 初始化连接资源
    • 从数据源中获取连接资源,使用完毕后归还

    druid连接池步骤:

    1. pom.xml中 导入坐标

      <!--spring框架-->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.2.RELEASE</version>
      </dependency>
      <!--连接mysql-->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
      </dependency>
      <!--druid连接池-->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.9</version>
      </dependency>
      
    2. 将druid.properties放入resources文件夹

      jdbc.driverClassName=com.mysql.jdbc.Driver
      jdbc.url=jdbc:mysql://127.0.0.1:3306/db1
      jdbc.username=root
      jdbc.password=root
      
    3. 在applicationContext配置文件中 引入context命名空间和约束路径

      <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
              https://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.springframework.org/schema/context
              https://www.springframework.org/schema/context/spring-context.xsd" >
      
    4. 在applicationContext配置文件中 加载配置文件

      <context:property-placeholder location="classpath:druid.properties"/>
      <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
          <property name="driverClassName" value="${jdbc.driverClassName}"></property>
          <property name="url" value="${jdbc.url}"></property>
          <property name="username" value="${jdbc.username}"></property>
          <property name="password" value="${jdbc.password}"></property>
      </bean>
      
    5. 写一个测试函数,使用getBean获取连接

      ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
      DruidDataSource dataSource = app.getBean(DruidDataSource.class);
      Connection conn = dataSource.getConnection();
      System.out.println(conn);
      conn.close();
      
  • 相关阅读:
    折线图平滑
    Matplotlib字体大小设置
    折线图
    柱状图
    zip()函数
    matplotlib基础
    unique()函数
    sorted()与sort()函数
    Oracle数据库文件导出为CSV格式的方法
    Numpy和Pandas
  • 原文地址:https://www.cnblogs.com/mingriyingying/p/13639500.html
Copyright © 2011-2022 走看看