8月9日学习笔记

1.

threadlocalmap采用开放定址法解决hash冲突,hashmap使用链地址法解决hash冲突。

2.

Map集合类kv要求

3.

switch()参数要求:1.7之前 为byte,short,int,char。1.7之后加入了String。

4.IOC的本质

在之前程序的主动权在程序员,需要不停的new对象。

 重点了解Set接口,IOC本质原理

   private UserDao userDao ;

//    利用set进行动态实现值的注入!
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

现在类似于多态,用户传递什么实现类都可以不动业务层而实现程序。

 

 5. 对于控制反转的理解

        控制:传统是由程序本身创建对象,使用Spring后,Spring托管对象的创建。

        反转:程序不再创建对象,而变成接收对象!

6. Dependency Injection

 

7. Set方式注入

依赖注入:依赖:bean对象的创建依赖于容器。

                注入:bean对象中的所有属性由容器来注入。

环境搭建

1.主类型以及引用类型

package com.yan.pojo;

public class Address {
    private String address;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

//=====================================================================
public class Student {

    private String name;
    private Address address;
    private String[] books;
    private List<String> hobbies;
    private Map<String, String> card;
    private Set<String> games;
    private String wife;
    private Properties info;
}

2.beans.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">

    <bean id="address" class="com.yan.pojo.Address">
        <property name="address" value="安陆"/>
    </bean>

    <bean id="student" class="com.yan.pojo.Student">
<!--        第一种,普通值注入,value-->
        <property name="name" value="晏楚"/>

<!--        第二种,bean注入,ref-->
        <property name="address" ref="address"/>

<!--        数组注入,-->
        <property name="books">
            <array>
                <value>红楼梦</value>
                <value>西游记</value>
                <value>水浒传</value>
                <value>三国演义</value>
            </array>
        </property>

<!--        List注入-->
        <property name="hobbies">
            <list>
                <value>听歌</value>
                <value>敲代码</value>
                <value>看电影</value>
            </list>
        </property>

<!--        Map注入-->
        <property name="card">
            <map>
                <entry key="身份证" value="420982199609230010"/>
                <entry key="银行卡" value="16542314156456"/>
            </map>
        </property>

<!--        Set注入-->
        <property name="games">
            <set>
                <value>LOL</value>
                <value>COC</value>
                <value>BOB</value>
            </set>
        </property>

<!--        null注入-->
        <property name="wife">
            <null/>
        </property>

<!--        properties注入
            key=value
            key=value
            key=value
-->
        <property name="info">
            <props>
                <prop key="driver">31906062</prop>
                <prop key="url">男</prop>
                <prop key="username">root</prop>
                <prop key="password">123456</prop>
            </props>
        </property>

    </bean>


</beans>

3.测试

import com.yan.pojo.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Student student = (Student) context.getBean("student");

        System.out.println(student.getHobbies());
    }
}

8. Bean的自动装配

byname的时候需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法的值一致

byType的时候需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性的类型一致

 

@Autowired和@Resource的区别:

都是用来自动装配的,都可以放在属性字段上

执行顺序不同

@Autowired通过byType的方式实现【常用】

@Resource先通过byType再通过byName方式实现

8. xml与注解的选择

xml与注解的比较:

xml更加万能,适用于任何场合!维护简单方便。

注解不是自己类使用不了,维护相对复杂!

最佳实践:

xml用来管理bean,注解只负责完成属性的注入;我们在使用的过程中,只需要注意一个问题:必须让注解生效

<!--    指定要扫描的包,这个包下的注解就会生效-->
    <context:component-scan base-package="com.yan"/>
<!--    配置使注解生效-->
    <context:annotation-config/>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值