day13_spring环境配置及bean使用

2023-05-16

1.spring简介:

​ 整合现有的技术框架。是一个轻量级的控制反转(IOC)和面向切面编程的框架(AOP),支持事务的处理和对框架整合的支持

DI(控制反转)就是IOC(依赖注入)的具体实现方式

弊端:配置十分繁琐!

官方下载地址: http://repo.spring.io/release/org/springframework/spring

GitHub地址:GitHub - spring-projects/spring-framework: Spring Framework

spring boot是快速开发的脚手架,微服务,约定大于配置

spring cloud是基于spring boot实现的

2.开发的基本配置

* 1.创建beans.xml spring的配置文件
<?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">
<!--使用spring创建对象,在spring中这些都称为bean-->
<!--    必须有无参构造才能用下面这个方法-->
<!--    <bean id="hello" class="com.yang.pojo.Hello">
&lt;!&ndash;        name为普通属性用value,其他的用ref&ndash;&gt;
        <property name="str" value="Spring"/>
    </bean>-->

    <!--通过下标获取值-->
    <bean id="hello" class="com.yang.pojo.Hello">
        <constructor-arg index="0" value="spring学习"/>
    </bean>

<!--    若多个参数都是string类型,就不能区分要用哪个 - 不推荐使用-->
    <bean id="hello" class="com.yang.pojo.Hello">
        <constructor-arg type="java.lang.String" value="zhangsan"/>
    </bean>


</beans>
  • 2.主程序中获取spring上下文

    public static void main(String[] args) {
    
            //获取spring的上下文,此时beans.xml中的bean都被实例化了,getBean只是获取已经实例化的其中一个bean
            ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
            //对象现在都在spring中的bean管理了
            Hello hello = (Hello) context.getBean("hello");
            System.out.println(hello);
    
        }
    

3.IOC创建对象的四种方式

​ 第一种必须要有无参构造,后面三种都是使用无参构造创建对象

1.常用的方式(默认),类中必须要有无参构造方法,否则报错!
 <!--    必须有无参构造才能用下面这个方法-->
    <!--        name为普通属性用value,其他的用ref-->
    <bean id="hello" class="com.yang.pojo.Hello">
        <property name="str" value="Spring"/>
    </bean>

​ 有dao,service三层结构的写法如下

<!--使用spring创建对象,在spring中这些都称为bean
    ref:引用spring容器中创建好的对象
    value:具体的值,基本数据类型
-->
    <bean id="userDao" class="com.yang.dao.UserDaoImpl"/>
    <bean id="userService" class="com.yang.service.UserServiceImpl">
        <property name="userDao" ref="userDao"/>
    </bean>
2.使用有参构造创建对象
1.下标赋值法
<!--通过下标获取值 下标指的是有参构造中参数的下标,而且必须要把有参构造中的参数写完整-->
    <bean id="hello" class="com.yang.pojo.Hello">
        <constructor-arg index="0" value="spring学习"/>
        <constructor-arg index="1" value="23"/>
    </bean>
2.属性类型赋值法,若是多个属性都是同一类型,就不好区分了----不推荐使用
<!--    若多个参数都是string类型,就不能区分要用哪个 - 不推荐使用-->
    <bean id="hello" class="com.yang.pojo.Hello">
        <constructor-arg type="java.lang.String" value="zhangsan"/>
    </bean>
3.参数名赋值
<bean id="hello" class="com.yang.pojo.Hello">
<!--        <constructor-arg type="java.lang.String" value="zhangsan"/>-->
        <constructor-arg name="str" value="nihao"/>
    </bean>

4.spring配置文档学习

1.alise 别名 : 同bean标签下的name属性
<!--针对bean中的id取的别名-->    <alias name="hello" alias="newHello"/>
2.bean的配置
<!--通过下标获取值 下标指的是有参构造中参数的下标,而且必须要把有参构造中的参数写完整autowire:自动导入scope:作用域(单例模式)id:bean的唯一标识符,相当于对象名class:bean对象所对应的全限定名。包名+类型,如下name:取别名,可以同时取多个,可以用空格,逗号分号等来区分,如下--><bean id="hello" class="com.yang.pojo.Hello" name="he1 he2,he3;he4">    <constructor-arg index="0" value="spring学习"/>    <constructor-arg index="1" value="23"/></bean>
3.import

​ 用于团队开发,可将多个文件导入合并成一个,注意bean不要重复!

<import resource="beans.xml"/>
##### 	4.各种类型属性的依赖注入
<?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">    <import resource="beans.xml"/>    <bean id="addre" class="com.yang.pojo.Address">        <property name="address" value="河南"/>    </bean>    <bean id="student" class="com.yang.pojo.Student">        <property name="name" value="zhangqian"/> <!--    基本属性字段-->        <property name="address" ref="addre"/> <!--    实体类-->        <property name="hobbies" >             <!--    list类型字段-->            <list>                <value>编程</value>                <value>舞蹈</value>                <value>歌曲</value>            </list>        </property>        <property name="games" >            <!--    set类型-->            <set>                <value>LOL</value>                <value>BOB</value>                <value>COC</value>            </set>        </property>        <property name="card" >             <!--    map类型-->            <map>                <entry key="身份证" value="422535454"/>                <entry key="银行卡" value="2324"/>            </map>        </property>        <property name="books" >            <!--    数组类型-->            <array>                <value>红楼梦</value>                <value>西游记</value>                <value>水浒传</value>            </array>        </property>        <property name="wife" >             <!--    string类型-->           <null/>  <!--值为null的时候的写法-->        </property><!--        <property name="wife" value=""/>-->        <property name="info" >             <!--    Properties类型-->            <props merge="true">                <prop key="学号">12345</prop>                <prop key="姓名">张三</prop>                <prop key="性别"></prop>            </props>        </property>    </bean></beans>
public class Student {    private String name;    private Address address;    private List<String> hobbies;    private Map<String,String> card;    private String[] books;    private Set<String> games;    private String wife;    private Properties info;    //address是对象,要想获取对象值,必须.toString()方法,同时Address类中也要重写.toString()方法    @Override    public String toString() {        return "Student{" +                "name='" + name + '\'' +                ", address=" + address.toString() +                ", hobbies=" + hobbies +                ", card=" + card +                ", books=" + Arrays.toString(books) +                ", games=" + games +                ", wife='" + wife + '\'' +                ", info=" + info +                '}';    }        //省略getter,setter方法}

总结依赖注入的三种方式:

1. 构造器注入2. set方式注入(**重点!**),即上面通过属性创建bean的方式 * 依赖:bean对象的创建依赖于容器 * 注入:bean对象中的所有属性都由容器来注入3. 标签注入,即p标签和c标签注入,扩展方式
5.命名空间

​ p命名空间和c命名空间

  1. p命名空间: 属性命名空间,即property简写.必须有无参构造

    先引入头文件

    xmlns:p="http://www.springframework.org/schema/p"
    
    <!--    或者用p标签:先引用p标签路径-->    <bean id="hello" class="com.yang.pojo.Hello" p:age="2" p:name="sansan"/>
    
  2. c命名空间:构造器命名空间,即constructor简写.必须要有有参构造

    先引入头文件

    xmlns:c="http://www.springframework.org/schema/c"
    
<bean id="hello1" class="com.yang.pojo.Hello" c:age="1" c:name="lisi"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

day13_spring环境配置及bean使用 的相关文章

  • Ubuntu字符界面输入密码始终提示错误 login incorrect 解决办法

    首先要明确自己的用户名 xff0c 可以在设置中看到 其次是密码 xff1a 如果密码有数字 xff0c 只能使用字母上面的数字输入 xff0c 数字键盘无法识别 xff0c 会导致login incorrect
  • Unix环境高级编程代码(实时更新)

    实例1 3 列出一个目录中所有文件 xff08 ls c xff09 include 34 apue h 34 include lt dirent h gt int main int argc char argv DIR dp struct
  • nginx-rewrite和if使用

    rewrite 常见的flag flag作用last基本上都用这个flag xff0c 表示当前的匹配结束 xff0c 继续下一个匹配 xff0c 最多匹配10个到20个 一旦此rewrite规则重写完成后 xff0c 就不再被后面其它的r
  • ZYNQ7020 FPGA 如何生成从Flash和SD卡启动的镜像文件

    ZYNQ7020 FPGA 生成从Flash和SD卡启动的镜像文件 xff08 BOOT bin xff09 创建BOOT bin 工具vivado 2017 4 1 创建工程 包括创建工程 xff0c 编写程序 xff0c 添加约束 2
  • 解析Android自带的SettingActivity——>Proference

    1 在res xml中 的代码解析 Preference是采用SharedPreference保存数据的 这里的属性key表示默认存储的键 xff0c defaultValue表示默认存储的值 如果是使用preference的话 xff0c
  • Android中使用lottie资源

    lottie资源的使用 1 下载lottie文件的网址 xff1a https lottiefiles com xff0c 下载的文件为 json的文件 2 存放在Android的位置为 3 在应用级别的 build gradle 文件中添
  • 【实验七】Linux生产者消费者问题(线程)

    目录 一 问题介绍 二 代码 1 prod cons cpp 2 producer h 3 producer cpp 4 consumer h 5 consumer cpp 6 mq h 7 mq cpp 8 message h 9 mes
  • HTTP-响应数据格式及常见地状态响应码(403,404,405)

    HTTP 响应数据格式 响应数据分为3部分 1 响应行 响应数据的第一行 其中HTTP 1 1表示协议版本 xff0c 200表示响应状态码 xff0c OK表示状态码描述 2 响应头 第二行开始 xff0c 格式为键值对的形式 3 响应体
  • 【Linux】TigerVNC安装指导

    1 以单一用户远程访问桌面 1 1 服务端中启用桌面共享 在统信服务器操作系统V20 1020a 上配置为启用单一客户端的远程桌面连接 1 2 配置远程桌面服务端 1 配置防火墙规则来启用对服务端的VNC访问或关闭防火墙 xff1a fir
  • 使用console.log输出特殊字符图案或自定义图片

    最近看到一篇比较有趣的文章 程序员的浪漫 console log 在浏览器控制台输出特殊字符编码的图案 想自己动手试一试 xff0c 很明显我做的效果不好 xff0c 弄了很久还是没弄出来 下面介绍另外一种方法 xff0c 方法来自 使用c
  • IDEA中添加了vue.js插件后setting就打不开;添加vue.js报错Requires plugin ‘intellij.webpack‘ to be installed

    IDEA版本要和vue js版本对应 查看IDEA版本 xff0c help about 然后再去官网查找和自己IDEA版本对应的vue js Versions Vue js IntelliJ IDEs Plugin Marketplace
  • yml配置文件简单语法及小坑

    yml文件使用方法 1 语法 K 空格 V 表示一对键值对 xff0c 以空格缩进来控制层级关系 xff0c 只要左对齐的一列数据 xff0c 都是一个层级的 属性和值是大小写敏感 2 写法 普通值 字符串默认不加单引号或者双引号 xff1
  • 抽象工厂模式

    工厂模式 工厂方法模式 xff08 Fatory Method Pattern xff09 提供一个接口 xff0c 一个可创建一系列相关对象的 无需指定他们的具体类 一个抽象工厂类 xff0c 不同的具体工厂产生不同的对象实体 eg 冰箱
  • docker简介--01

    官方文档 xff1a https docs docker com engine reference commandline docker 官方仓库 xff1a https hub docker com docker基本组成 image 镜像
  • docker网络配置和名称空间管理

    docker容器虚拟化 虚拟化网络 Network Namespace 是 Linux 内核提供的功能 xff0c 是实现网络虚拟化的重要功能 xff0c 它能创建多个隔离的网络空间 xff0c 它们有独自网络栈信息 不管是虚拟机还是容器
  • CentOS系统下安装docker简易步骤

    docker 官网地址 https www docker com docker 开发文档 https docs docker com manuals 手册 gt install gt Linux xff08 centos xff09 环境为
  • linux环境安装jdk

    linux环境安装jdk 1 查看本环境下是否java环境 java version 不存在 已存在 2 如果不存在 xff0c 先去下载jdk 到官网下载jdk 注 xff1a 一定要根据具体的linux系统按需下载对应的安装包 我的是l
  • linux环境下安装tomcat

    配置tomcat 到官网下载tar包 将tar包上传到服务器 并解压 span class token function tar span zxvf apache tomcat 9 0 65 tar gz 重命名tomcat9 span c
  • docker基础命令以及常用命令

    docker 基本命令 1 其他命令 span class token comment 查看版本 span docker version span class token comment 查看信息 span docker info span
  • Redis基础数据结构及其使用

    Redis 一 xff0c docker方式安装redis span class token comment 拉取 redis 镜像 span span class token operator gt span span class tok

随机推荐

  • 设计模式之--原型模式

    原型模式 原型实例指定创建对象的种类 xff0c 并且通过复制这些原型创建新对象 使用场景 xff1a 类初始化消耗资源比较多 使用new生成一个对象需要非常繁琐的过程 构造函数比较复杂 在循环体中产生大量对象 浅克隆 浅克隆只是完整复制了
  • redis分布式锁使用方式

    为什么使用锁 xff1f 锁的作用是要解决多线程对共享资源的访问而产生的线程安全问题 当多个线程并发操作某个对象时 xff0c 可以通过synchronized来保证同一时刻只能有一个线程获取到对象锁进而处理synchronized关键字修
  • Redis的延时队列

    延时队列 redis的list数据结构用来做一部消息队列 xff0c 使用rpush lpush操作入队列 使用lpop rpop来出队列 span class token operator gt span rpush notify que
  • 设计模式---代理模式

    代理模式 proxy pattern 定义 xff1a 指为其他对象提供一种代理 xff0c 以控制对这个对象的访问 代理对象在客户端和目标对象之间起到中介作用 使用目的 保护目标对象增强目标对象 解释 Subject是顶层接口 xff0c
  • 04747 java程序设计笔记 --多线程

    文字篇 线程概念 进程 程序在处理机的一次运行 xff0c xff08 从代码加载 xff0c 执行至完毕的一个完成过程 xff09 线程 进程执行过程中产生的多条执行线索 xff0c 比进程单位更小的执行单位 它没有出口 xff0c 没有
  • Kubernetes(k8s)基础

    pod Pod是什么 Pod是Kubernetes创建或部署的最小单位 是Kubernetes集群中的一个应用实例 xff0c 总是部署在同一个节点Node上 Pod中包含了一个或多个容器 xff0c 还包括了存储 网络等各个容器共享的资源
  • 04747java程序设计 之 输入输出流

    输入输出流 数据流 概念 数据流指一组有顺序的 xff0c 有起点和重点的字节集合 输入流 概念 只读 xff0c 用于向计算机内输入信息使用 主要的读取方法 int read 从输入流中读取一个字节的二进制数据 int read byte
  • 04747java程序设计 -- 继承与多态

    继承与多态 子类 is a 关系 整体与部分 has a extends 继承关键词 父类也叫做 超类 基类 object 类 类层次最高点 xff0c 是所有类的直接或间接父类 方法 public final Class getClass
  • 03731计算机网络原理 - 计算机网络概念 脑图整理

  • 03137计算机网络原理 - 计算机网络体系结构

  • 03137计算机网络原 - 物理层

    物理层 基础概念 OSI模型最底层 功能 为在链路实体间传送比特流而对物理连接的 接通 维持 和 拆除 提供机械 电气 功能和规程方面的方法 作用 尽可能屏蔽现有多种多样的硬件设备 传输媒体和通信手段的差异 确保原始数据可以在各种物理媒介上
  • 03137计算机网络原理 - 数据链路层

    数据链路层 功能 定义 基本功能是 向该层用户 提供透明和可靠的数据传送基本服务 帧和介质访问控制 数据链路层 是 对物理层传输原始比特流功能的加强 将物理层提供的可能出错的粗粒连接改造成逻辑上无差错的数据链路 使之对网络层表现为无差错的线
  • 彻底卸载Android Studio

    在安装Android Studio会有很多问题导致无法正常运行 xff0c 多次下载AS多次错误后了解到 xff0c 删除以下四个文件才能彻底卸载Android Studio 第一个文件 xff1a gradle 路径 xff1a C Us
  • Linux远程登录

    L i n u x 远程登录
  • 03_SpringBoot项目配置

    文章目录 SpringBoot项目配置0x01 properties格式配置文件0x02 yml格式配置文件配置对象类型数据配置集合类型配置数组类型 0x03 properties和yml的区别优先级区别 0x04 配置文件在项目中的位置0
  • VS中空项目、win32项目、控制台程序的区别

    一 区别 xff08 1 xff09 Win32控制台程序 xff0c 没有界面 xff0c 只有命令符 生成的 exe 文件直接运行操作即可 xff08 2 xff09 Win32项目 xff0c 有界面 但是界面里面的控件 xff0c
  • kubectl命令应用

    kubectl命令语法 kubectl span class token punctuation span command span class token punctuation span span class token punctua
  • java生成10个随机数(1-100)到数组中,并倒序打印以及求平均值,最大值和最大值下标,并查找其中是否有8.

    代码如下 Scanner in 61 new Scanner System in Random r 61 new Random int arr 61 new int 10 int sum 61 0 int max 61 0 int a 61
  • [ 常用工具篇 ] Esxi 安装详解

    博主介绍 nbsp 博主介绍 大家好 我是 nbsp PowerShell nbsp 很高兴认识大家 主攻领域 渗透领域 数据通信 通讯安全 web安全 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步
  • day13_spring环境配置及bean使用

    1 spring简介 xff1a 整合现有的技术框架 是一个轻量级的控制反转 xff08 IOC xff09 和面向切面编程的框架 xff08 AOP xff09 xff0c 支持事务的处理和对框架整合的支持 DI 控制反转 就是IOC x