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/>
49万+

被折叠的 条评论
为什么被折叠?



