Spring-01
1.Spring
1.1Spring简介
spring----春天,为软件行也带来了春天。
1.2 优点
Spring是一个免费的开源的框架(容器)
Spring是一个轻量级的,非入侵式的框架
控制反转(IOC)。面向切面编程(AOP)(重点)
支持事物的处理,对框架整合的支持。
总结:Spring就是一个轻量级的控制反转(IOC)和面向切面编程的框架!
2.IOC理论推导
我们使用一个set接口的实现,已经发生的革命性的变化
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
1,之前,程序员是主动创建对象,控制权在程序员手上!
2,使用了set注入之后,程序不在具有主动性,而是变成了被动的接受对象。
3.HelloSpring
控制:谁来控制一下对象的创建,传统应用程序的对象是由程序本身控制创建的,使用spring后,对象是由Spring来创建的;
反转:程序本身不创建对象,而变成被动的接受对象,
依赖注入:就是利用set方法来进行注入的
IOC是一种编程思想,由主动的编程变成被动的接收。
可以通过newClassPathXmlApplicationContext来浏览一下底层的源码,
4.IOC创建对象的方式
1.使用无参构造创建对象,默认!
2.假设我们要使用有参构造来创建对象。
下标赋值
<bean id="User" class="com.lm.pojo.User">
<constructor-arg index="0" value="赖敏"/>
</bean>
<!-- 第二种,类型创建-->
<!-- <bean id="User" class="com.lm.pojo.User">-->
<!-- <constructor-arg type="java.lang.String" value="我是爸爸"/>-->
<!-- </bean>-->
<!-- 第三种直接通过参数名字-->
<bean id="User" class="com.lm.pojo.User">
<constructor-arg name="name" value="妈妈"/>
</bean>
配置文件在加载的时候就已经初始化了!!!
5.Spring配置
1.别名
<alias name="User" alias="rtyuiohdgvhcjkjh"/>
2.Bean的配置
<bean id="User" class="com.lm.pojo.User" name="na uu,ee;oi">
<constructor-arg name="name" value="妈妈"/>
</bean>
3.import导入
用于导入多个配置文件,将他合并为一个配置文件
<import resource="beans.xml"/>
<import resource="beans.xml"/>
<import resource="beans.xml"/>
6.依赖注入
1.构造器注入
2.Set方式注入
依赖:bean对象的创建依赖容器
注入:bean中所有的属性,由容器注入。
1.复杂类型
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
2.真实测试对象
private String name;
private Address address;
private String[] books;
private List<String> hobbys;
private Map<String,String> card;
private Set<String> games;
private String wife;
private Properties info;
<bean id="address" class="com.lm.pojo.Address">
<property name="address" value="上海"/>
</bean>
<bean id="student" class="com.lm.pojo.Student">
<property name="name" value="赖敏"/>
<!-- Bean注入-->
<property name="address" ref="address"/>
<!-- 数组注入-->
<property name="books">
<array>
<value>红楼梦</value>
<value>三国演义</value>
<value>西游记</value>
<value>水浒传</value>
</array>
</property>
<!-- List注入-->
<property name="hobbys">
<list>
<value>唱歌</value>
<value>跳舞</value>
<value>吃饭</value>
</list>
</property>
<!-- Map注入-->
<property name="card">
<map>
<entry key="身份证" value="456789876545678987654345"/>
<entry key="银行卡" value="0987656789098767890987678"/>
</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注入 -->
<property name="info">
<props>
<prop key="学号">00997</prop>
<prop key="性别">男</prop>
<prop key="姓名">赖敏</prop>
</props>
</property>
</bean>
浙公网安备 33010602011771号