Java阶段二Day14

这篇具有很好参考价值的文章主要介绍了Java阶段二Day14。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java阶段二Day14

复习前日知识点

SpringFramework版本

Spring是一个生态,包含很多子模块,其中SpringFramework是核心的基础模块,平时常说的Spring框架指的就是Spring Framework,其他子模块也是自它的基础上衍生出来的

当前学习使用5.3.24版本,Spring6版本支持jdk17

SpringFramework核心

  • IoC:控制反转思想,把对象的创建及其各个对象间的依赖维护交给第三方容器处理
  • AOP:面向切面编程,AOP用来封装多个类的公共行为,将那些与业务无关的行为封装为一些公共类,减少重复代码,降低耦合度

SpringFramework创建工程

  • 在 pom.xml 引入SpringFramework依赖

    <dependencies>
        <!-- 引入spring framework 的 context基础依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.24</version>
        </dependency>
    </dependencies>
    
  • 定义类,类属性,方法

  • 创建xml的配置文件:resources / xxx.xml ,通过<bean>标签指定创建对象

    <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 class="com.liner.spring.iocxml.User" id="user"></bean>
    </beans>
    
  • ApplicationContext读取xxx.xml文件信息,并创建loC容器,并创建对象和初始化

    ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
    
  • 通过context.getBean(“xxx”)获取创建好的java bean对象

    Object obj = context.getBean("id属性值", 类名.class);
    

SpringFramework相关概念

  • loC:控制反转的思想
  • loC容器:负责Java bean对象的创建及初始化
  • DI注入:为对象的属性赋值
  • bean管理:利用xml配置文件,进行属性值注入

由Spring的loC容器创建的java对象,叫bean对象,和平时普通的java对象没有区别

bean对象的创建过程

Java阶段二Day14

xml配置文件中的标签

  • bean标签,主要是创建java bean对象

    <bean id = "xxx" class = "xxx.xxx.xxx"></bean>
    
  • property标签,通过set方法注入属性值

    <!-- 字面量值注入 -->
    <property name = "" value = ""></property>
    <!-- 空值null注入 -->
    <property name = "">
    	<null></null>
    </property>
    <!-- 属性值包含特定符号,xml实体方式 -->
    <property name = "" value = "&lt;xxx&gt;">
    </property>
    <!-- 属性值包含特定符号,CDATA区方式 -->
    <property name = "">
    	<value><![CDATA[<xxxxxx>]]]></value>
    </property>
    
    
  • constructor-arg标签,通过构造器注入属性值

    <constructor-arg name = "" value = ""></constructor-arg>
    

基于XML管理bean

对象类型属性的注入

需要注入的数据类型为对象,而不是一个字面量

  • 引入外部bean

    通过在当前bean标签中通过 ref属性引用外部bean的方式实现

    <!--    外部bean-->
    <bean id="emp1" class="com.liner.spring.diobj.Emp">
        <property name="eName" value="张三"/>
        <property name="salary" value="50000.0"/>
        <property name="dept" ref="dept1"/>
    </bean>
    
    <bean id="dept1" class="com.liner.spring.diobj.Dept">
        <property name="dName" value="Java教研部"/>
    </bean>
    
  • 内部bean

    在需要注入对象的bean标签中内嵌 对象类型属性的 bean标签即可

    <!--   内部bean-->
    <bean id="emp2" class="com.liner.spring.diobj.Emp">
        <property name="eName" value="李四"/>
        <property name="salary" value="1000.0"/>
        <property name="dept">
            <bean class="com.liner.spring.diobj.Dept">
                <property name="dName" value="销售部门"/>
            </bean>
        </property>
    </bean>
    
  • 级联属性赋值(了解)

    可以在标签中给需要注入对象的属性重新赋值

    <!--    级联属性-->
    <bean id="emp3" class="com.liner.spring.diobj.Emp">
        <property name="eName" value="王五"/>
        <property name="salary" value="500.00"/>
        <property name="dept" ref="dept1"/>
        <!--        级联属性赋值-->
        <property name="dept.dName" value="综合办公室"/>
    </bean>
    
    <bean id="dept1" class="com.liner.spring.diobj.Dept">
        <property name="dName" value="Java教研部"/>
    </bean>
    

数组类型属性注入

使用 <array>标签<value>子标签实现

<bean id="person1" class="com.liner.spring.diarray.Person">
    <property name="name" value="于谦"/>
    <property name="age" value="54"/>
    <property name="hobby">
        <!-- 数组类型属性注入 -->
        <array>
            <value>抽烟</value>
            <value>喝酒</value>
            <value>烫头</value>
        </array>
    </property>
</bean>

集合类型属性注入

  • list集合属性注入

    使用 <property> 标签下的 <list>子标签<value> 子标签实现

    <bean id="teacher1" class="com.liner.spring.dilistmap.Teacher">
        <property name="tName" value="张三"/>
        <property name="studentList">
            <list>
                <ref bean="student1"/>
                <ref bean="student2"/>
            </list>
        </property>
    </bean>
    
    <bean id="student1" class="com.liner.spring.dilistmap.Student">
        <property name="sName" value="李四"/>
        <property name="age" value="12"/>
    </bean>
    <bean id="student2" class="com.liner.spring.dilistmap.Student">
        <property name="sName" value="王五"/>
        <property name="age" value="31"/>
    </bean>
    
  • Map集合属性注入

    使用 <util> 标签实现

     <bean id="stuMap" class="com.liner.spring.dilistmap.Student">
            <property name="sName" value="孙悟空"/>
            <property name="age" value="12"/>
            <property name="teacherMap">
                <map>
                    <entry key="1" value="猪八戒"/>
                    <entry>
                        <key>
                            <value>2</value>
                        </key>
                        <value>沙悟净</value>
                    </entry>
                </map>
            </property>
        </bean>
    
  • 引用集合类型bean注入

    使用 <property> 标签下的 <map>子标签<entry> 子标签实现。

    <?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:util="http://www.springframework.org/schema/util"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
    
        <!--    引用类型的bean-->
        <bean name="stuUtil" class="com.liner.spring.dilistmap.Student">
            <property name="sName" value="小亮"/>
            <property name="age" value="52"/>
            <property name="teacherMap" ref="mapUtil"/>
            <property name="courseList" ref="listUtil"/>
        </bean>
    
        <util:list id ="listUtil">
            <value>表演</value>
            <value>音乐</value>
            <value>形体</value>
        </util:list>
    
        <util:map id = "mapUtil">
            <entry key="1" value="王五"/>
            <entry key="2" value="赵六"/>
        </util:map>
    
    </beans>
    

p命名空间

这也是一种注入方式,可以在xml中定义命名空间或者叫名称空间,可以简化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:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">


    <bean id="studentp" class="com.liner.spring.dilistmap.Student"
          p:age="12" p:sName="吉吉国王" p:courseList-ref="mapUtil" p:teacherMap-ref="listUtil">
    </bean>

</beans>

引入外部属性文件

当前所有的配置和数据都在xml文件中,一个文件中有很多bean,修改和维护起来很不方便,生产环境中会把特定的固定值放到外部文件中,然后引入外部文件进行注入,比如数据库连接信息

  1. pom.xml中引入数据库依赖

    <!-- MySQL驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.15</version>
    </dependency>
    
    <!-- 数据源,连接池依赖 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.21</version>
    </dependency>
    
  2. resources目录下创建外部属性文件,一般为properties格式,定义数据库信息,如:jdbc.properties

    jdbc.user=root
    jdbc.password=root
    jdbc.url=jdbc://mysql://localhost:3306/spring
    jdbc.driver=com.mysql.cj.jdbc.Driver
    
  3. 创建spring配置文件bean-jdbc.xml,引入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/context 
           http://www.springframework.org/schema/context/spring-context.xsd
           
           http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        
        <!-- 引入外部属性文件 -->
        <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
        <!-- 完成数据库信息注入 -->
        <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="url" value="${jdbc.url}"></property>
            <property name="username" value="${jdbc.user}"></property>
            <property name="password" value="${jdbc.password}"></property>
            <property name="driverClassName" value="${jdbc.driver}"></property>
        </bean>
    </beans>
    
  4. 创建测试类文章来源地址https://www.toymoban.com/news/detail-439775.html

    public class TestJdbc {
    
        // 外部文件属性引入测试用例
        @Test
        public void demo02(){
            ApplicationContext context = new ClassPathXmlApplicationContext("bean-jdbc.xml");
            DruidDataSource druidDataSource = context.getBean("druidDataSource", DruidDataSource.class);
            System.out.println(druidDataSource.getUrl());
        }
    }
    

到了这里,关于Java阶段二Day14的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web知识点复习

    1. get/post请求优缺点 (1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中) (2)post发送的数据更大(get有url长度限制) (3)post能发送更多的数据类型(get只能发送ASCII字符) (4)post比get慢,get和post请求的过程中GET产生一个T

    2024年01月22日
    浏览(40)
  • SpringBoot知识点复习

    约定优于配置:Spring Boot鼓励开发人员遵循一组默认约定,减少配置的复杂性。 自动配置:Spring Boot可以自动配置应用程序,根据项目的依赖和需要自动配置Spring特性。 嵌入式Web服务器:Spring Boot提供了内嵌的Web服务器,如Tomcat、Jetty和Undertow,使Web应用程序的部署变得简单。

    2024年02月05日
    浏览(42)
  • WPF复习知识点记录

    由于近几年主要在做Web项目,客户端的项目主要是以维护为主,感觉对于基础知识的掌握没有那么牢靠,趁着这个周末重新复习下WPF的相关知识。 文章内容主要来自大佬刘铁锰老师的经典著作《深入浅出WPF》。 因为是复习,所以知识内容不会一一记录,如有需要了解更多可

    2024年02月11日
    浏览(40)
  • Pytorch基础知识点复习

    本篇博客是本人对pytorch使用的查漏补缺,参考资料来自 深入浅出PyTorch,本文主要以提问的方式对知识点进行回顾,小伙伴们不记得的知识点可以查一下前面的教程哦。   现在并行计算的策略是 不同的数据分布到不同的设备中,执行相同的任务(Data parallelism) 。   它的逻

    2024年01月20日
    浏览(40)
  • Web期末复习知识点

    下载Tomcat :前往Apache Tomcat官方网站(https://tomcat.apache.org)下载适合您操作系统的Tomcat版本。  安装Tomcat :解压下载的Tomcat压缩文件到您选择的目录。例如,将Tomcat解压到/opt/tomcat。 配置环境变量(可选) :如果需要在任何位置启动Tomcat,可以将Tomcat的bin目录添加到系统的

    2024年02月04日
    浏览(45)
  • 离散数学---期末复习知识点

    一、 数理逻辑   [ 复习知识点 ] 1、命题与联结词(否定¬、析取∨、合取∧、蕴涵→、等价↔),命题(非真既假的陈述句),复合命题(由简单命题通过联结词联结而成的命题) 2、命题公式与赋值(成真、成假),真值表,公式类型(重言、矛盾、可满足),公式的基本等值式

    2024年02月08日
    浏览(73)
  • Zookeeper 复习知识点(更新中)

    Zookeeper 是开源的,是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理大家都关心的数据,然后接收观察者的注册,一旦这些数据发生变化,Zookeeper 负责通知已经注册的观察者。Zookeeper 相当于文件系统 + 通知机制。 1.1 Zookeeper 特点 集群架构 :Zookeeper 通常由

    2024年01月18日
    浏览(36)
  • Spark相关知识点(期末复习集锦)

    嗨喽,最近小伙伴们快要期末考试了吧,下面是我对《Spark零基础实战》的总结,希望能帮助到你们。 Spark,拥有hadoop MR所具有的优点,但不同于MR的是job中监测结果可以 保存在内存中 ,从而不再需要读写HDFS,因此spark能够更好的适用于数据挖掘与机器学习等需要迭代的m r的

    2024年02月02日
    浏览(50)
  • 线性代数-知识点复习(面试用)

    整理:Peter1146717850 一、向量与线性组合 向量:往什么方向走多么远 e.g. ( 1 2 ) begin{pmatrix} 1 \\\\ 2end{pmatrix} ( 1 2 ​ ) 向量的 模 :向量的长度 向量的 加减法 :向量对应元素相加减(前提:维度相同) ( a b c ) + ( x y z ) = ( a + x b + y c + z ) begin{pmatrix} a \\\\b \\\\ cend{pmatrix} + begin{pma

    2024年04月25日
    浏览(37)
  • 图论期末复习知识点 卓新建

    图的定义、关联、相邻、重边、环、孤立点、简单图 同 顶点的度d(v), deg(v)、出度、入度、最大度D、最小度d、奇点、偶点、邻域、悬挂点、 悬挂边 独立集 偶图/二部图/二分图、多部图、完全偶图、完全图、正则图 度序列 、图序列(简单图的度序列) 握手定理 子图、极大子

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包