Spring基础

Spring

一、是什么

是一个轻量级的框架,框架是开发好的程序。在框架的基础上实现对应的功能,按照框架要求实现。

二、优势

1、方便解耦(耦合度:程序之间的依赖关系,耦合度越高程序修改越麻烦) 2、aop面向切面编程技术的支持
3、声明事务管理
4、降低JavaEE使用api的难度
5、方便测试
6、集合了多个优秀框架

三、分类

1、Spring data
2、Springboot
3、Springclound(分布式)

四、Spring使用

一)、项目的创建

1、导入jar包在这里插入图片描述 2、创建配置文件applictionContext.xml
3、配置文件添加需要的约束

二)、IOC使用

IOC就是把创建对象的权限交给了applictionContext.xml 文件,其中的每一个bean就是一个对象
IOC原理图
在这里插入图片描述

1、创建对象

<!--id:标准为和接口类名保持一致首字符小写    class:实现类全路径-->
<bean id="user" class="com.hp.pojo.User"></bean>

2、使用

@Test
    public void userDao(){
        //获取配置文件对象
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("appliconContext.xml");
        //1、通过getBean()方法获取类对象,强制转型
        UserDao userDao = (UserDao) classPathXmlApplicationContext.getBean("userDao");
        //1、通过getBean()方法获取类对象,写入父类名.class转型
        //User user = classPathXmlApplicationContext.getBean("user",User.class);
        //调用方法
        userDao.eat();
    }

二)、DI依赖注入

依赖注入就是给bean实例化对象的属性赋值

1)、构造方法注入

前提:创建实体类必须又无参构造方法

<!--set方法注入-->
<!-- class:实体类全路径  -->
    <bean id="user" class="com.hp.pojo.User">
<!--  name:实体类属性名   value:给name属性赋值   -->
        <property name="id" value="1"></property>
        <property name="name" value="zzc"></property>
<!--     ref:引入其他bean对象值   -->
        <property name="birthday" ref="birth"></property>
    </bean>
2)、set方法注入

前提:实体类必须有set方法赋值,get方法取值

<!--构造方法注入-->
    <bean id="user1" class="com.hp.pojo.User">
        <constructor-arg name="id" value="2"></constructor-arg>
        <constructor-arg name="name" value="gy"></constructor-arg>
        <constructor-arg name="birthday" ref="birth"></constructor-arg>
    </bean>
3)、p标签注入

前提:配置文件必须有p标签头部信息

<!--p标签表头信息-->
xmlns:p="http://www.springframework.org/schema/p"
<!--p标签注入-->
<!-- p:属性名="值"   -->
    <bean id="user2" class="com.hp.pojo.User" p:id="3" p:name="zc" />
3)、SPel表达式注入

前提:在创建一个实体类对象,改值类型与要赋值的属性类型相同

	private Date time;
    public Date getTime() {
        return new Date();
    }
<!--SPel属性注入-->
<!--获取值语法#{对象名.get属性名}-->
<!--    另一个实体类对象-->
    <bean id="userinfo" class="com.hp.pojo.Userinfo"></bean>
<!--    引入其他实体类对象属性值,前提必须改值类型与要赋值的属性类型相同-->
    <bean id="user3" class="com.hp.pojo.User">
        <property name="birthday" value="#{userinfo.time}"></property>
    </bean>
3)、集合注入

前提:在一个实体类创建多个对应集合类属性

	private String[] array;
    private List<String> list;
    private Set<String> set;
    private Map<String,String> map;
(1)、list集合注入
<!--  list  name="实体属性名"    -->
        <property name="list">
            <list>
<!--                赋值-->
                <value>1</value>
                <value>2</value>
                <value>3</value>
            </list>
        </property>
(2)、set集合注入
<!--    set    -->
        <property name="set">
            <set>
                <value>4</value>
                <value>5</value>
            </set>
        </property>
(3)、map集合注入
<!--map-->
        <property name="map">
            <map>
                <entry key="name" value="zzc"></entry>
            </map>
        </property>

五、XML开发和注解开发的优势

1、Xml开发维护起来方便,但是配置比较繁琐,代码量大。
2、注解开发维护困难,维护需要改源代码,工作量大。方面快速开发
3、Xml和注解混合开发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值