ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring框架简单学习

2022-02-01 23:30:03  阅读:208  来源: 互联网

标签:xml user2 框架 user1 对象 Spring 学习 user 注入


Spring学习大纲

1.spring的基础配置

  1. xml注入的时候,value的值是给构造函数,创建时候的,并不是指定的一个name变量给它赋值
  2. getBean ,Bean标签可以多别名
  3. import,用来合并xml配置(一般用于团队,每个人开发不同类需要一起配置时候)在这里插入图片描述
    将其余的xml配置文件
    集合到一个xml中

    在这里插入图片描述

2.set注入

1.普通注入
2.bean注入
3.集合注入
4.list注入
5.map注入
6.set注入
7.空注入
8.props注入(infomation)

<?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注入 <-->
    <bean id="address" class="com.Ethan.pojo.Address">
        <property name="address" value="贵安"/>
    </bean>

    <bean id="student" class="com.Ethan.pojo.Student">
    	<!-->普通注入 <-->
        <property name="name" value="小俊"/>
        <!-->Bean注入 <-->
        <property name="address" ref="address"/> 
		<!-->array数组注入 <-->
        <property name="book">
            <array>
                <value>c plus plus</value>
                <value>java</value>
                <value>python</value>
            </array>
        </property>
		<!-->list集合注入 <-->
        <property name="hobbys">
            <list>
                <value>唱</value>
                <value>跳</value>
                <value>rap</value>
                <value>篮球</value>
            </list>
        </property>
        <!-->Map集合注入 <-->
        <property name="card">
            <map>
                <entry key="身份证" value="333333444444555555"/>
                <entry key="银行卡" value="999999999999999999"/>
            </map>
        </property>
		<!-->set注入 <-->
        <property name="game">
            <set>
                <value>DOTA</value>
                <value>LOL</value>
                <value>CF</value>
            </set>
        </property>
		<!-->空注入 <-->
        <property name="wife">
            <null/>
        </property>
		<!-->property注入 <-->
        <property name="info">
            <props>
                <prop key="学号"> 202105100</prop>
                <prop key="姓名">小俊</prop>
                <prop key="sex">man</prop>
            </props>
        </property>

    </bean>


</beans>

2.1.p命名注入和c命名注入

在xml配置文件中引入命名规则

		xmlns:p="http://www.springframework.org/schema/p"
        xmlns:c="http://www.springframework.org/schema/c"

我很奇怪的一点是:我明明在我的idea中引入了两条规则,并且在setting里设置了URL。但是还是不能使用。但这两个注入规则不作为学习的重点。

3.Junit

测试@Test
后续有时间再返回来详细讲解这个Junit,只要记得它的用法就可以了。

4.Bean的作用域

下面列出一张官方的图片重点学习bean作用域有哪些
在这里插入图片描述

注:看不清的字体,大家可以去官网查一下(链接附上)

1.prototype :原型模式,简单来说就是每次去get对象的时候都会创建一个新的对象。具体可以看官方给出的图

在这里插入图片描述
我们可以来看看在代码的具体实现

  <bean id="user" class="com.Ethan.pojo.user"   scope="prototype"/>

回到test测试类,测试一下我们在容器中取得的对象,是同一个对象还是多个对象

	@Test
    public void test(){

  
        ApplicationContext context = new ClassPathXmlApplicationContext("userbeans.xml");

        user user1 = (user) context.getBean("user");

        user user2 = (user) context.getBean("user");

        System.out.println(user1==user2);

        System.out.println(user1.hashCode());

        System.out.println(user2.hashCode());

        //原型模式
    }

hashcode:值来源于这个对象的内部地址转换成的整型值。(网上找的,然后再深入很麻烦没有再看)

我们可以看看对象的地址是否一样来判断生成的是多个对象还是单个对象。
prototype输出
显然user1和user2是两个不同的对象

2.singleton:单例模式,从容器中get的对象是同一个(spring的default)

官网给出的图,我觉得对我们理解singleton可以更加直观
在这里插入图片描述

   <bean id="user" class="com.Ethan.pojo.user"   scope="singleton"/>
public void test(){

        //单例模式

        ApplicationContext context = new ClassPathXmlApplicationContext("userbeans.xml");

        user user1 = (user) context.getBean("user");

        user user2 = (user) context.getBean("user");

        System.out.println(user1==user2);

        System.out.println(user1.hashCode());

        System.out.println(user2.hashCode());
    }

我们可以看看我们的输出结果
singleton
输出的地址一致说明我们get到的user1和user2是同一个对象。
对spring的理解:我们在使用这些对象的时候。xml中配置的文件,会给我们把这些对象加入到IOC容器中,我们去取这些对象就行了

5.bean自动装配

1.AutoWire:1.ByName,2.ByType

  • byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的bean id
  • byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean!

@Autowired:它会自动寻找id相同的bean,说白了就是通过byName寻找
@Qualifier(value=" "):会寻找到与value相同的beanId的对象
**@Autowired(**required = false)


@Resource被弃用

标签:xml,user2,框架,user1,对象,Spring,学习,user,注入
来源: https://blog.csdn.net/u014306023/article/details/122591976

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有