Spring的优点:
- 核心容器提供spring框架的基本功能,核心容器的主要组件是BeanFactory, 他是工厂模式的实现. BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性与实际的应用程序代码分开
环境搭建:
1.一个依赖,四个核心
2.控制反转
(1)含义:依赖于容器给予你资源,控制权坐落到了容器身上,不主动new实例化对象,而是需要哪个对象,便向容器发请求,让容器帮自己new一个对象出来
(2)依赖注入:所需求的对象,需要依赖容器注入,本质上是IOC和DI是同一思想下不同维度的表现.
(3) 注入的方式:
>接口注入:在接口中定义要注入的信息,并通过接口来完成注入。(Spring不支持这种注入方式--不支持的原因是--Spring声称其是非入侵式的《离开这个框架也能活》,如果使用接口注入的话,就违背了这一原则)
>setter注入:
>构造器注入
>注解注入
Xml文件的配置
<context:component-scan base-package="com.zhiyou.han"></context:component-scan>
注解有:1.自动注入:@Resources, @Autowired
2.Bean的定义:@Component, @Repository, @Service 和 @Controller
@Component是个泛化概念,可以用在任何层次。如果是web开发,
尽量用@Repository、@Service 和 @Constroller
(4) 不同数据类型的注入方式:
1.如果注入的为基本类型(8)或者String类型 value="" 2.如果注入的为引用类型() ref 3.数组
<property name="local"> <array> <value>北京2</value> <value>北京3</value> <value>北京4</value> <value>北京5</value> </array> </property>
4.集合list set集合
<property name="addess"> <list> <value>上海1</value> <value>上海3</value> <value>上海4</value> <value>上海5</value> <value>上海7</value> </list> </property>
5.Map集合
<property name="map"> <map> <entry key="name" value="王五"/> <entry key="age" value="38"/> <entry key="dz" value="北京"/> </map> </property>
6.Properties属性类
<property name="pop"> <props> <prop key="url" >jdbc:mysql://localhost:3306/mysql</prop> <prop key="user" >root</prop> </props> </property>
|
该方法在ApplicationContext读取配置文件就会创建bean的实例化,不需要考虑bean的作用域 |
该方法已经被淘汰,BeanFactory在启动的时候不会创建bean实例,而是在getBean()的时候才会创建实例 |
XML的代码:
<bean id = "student" class="com.zhiyou.han.Student"> <property name="name" value="韩广学"></property> <property name="address"> <array> <value>北京1</value> <value>北京2</value> <value>北京3</value> <value>北京4</value> </array> </property> <property name="address1"> <list> <value>北极1</value> <value>北极5</value> <value>北极4</value> <value>北极3</value> <value>北极2</value> </list> </property> <property name="map"> <map> <entry key="15" value="哈哈1"></entry> <entry key="14" value="哈哈2"></entry> <entry key="13" value="哈哈3"></entry> <entry key="12" value="哈哈4"></entry> <entry key="11" value="哈哈5"></entry> </map> </property> <property name="teacher" ref="teacher"></property> <property name="properties"> <props> <prop key="url">JDBC:myql</prop> <prop key="name">JDBC:name</prop> <prop key="pass">JDBC:password</prop> </props> </property> </bean> <bean id="teacher" class="com.zhiyou.han.Teacher"> <constructor-arg name="name" value="成吉思汗"></constructor-arg> </bean>