spring学习笔记一
Spring Framework框架
Spring Framework学习路线
IOC核心概念
IOC入门案例
DI入门案例
这里的set方法是容器在调用
代码:
<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
<!--配置service与dao的关系
property标签表示配置当前的bean属性
name是BookServiceImpl的你自己起的属性名,ref是要注入,关联的bean的名字
--> <property name="bookDao" ref="bookDao"></property> </bean>
bean基础配置
bean起别名
bean的作用范围
bean的实例化
第一种:通过构造方法(常用)
方式二:静态工厂
为了兼容早期遗留的系统而创,了解即可。
方式三:实例工厂
方式四(实用)
UserDaoFactoryBean代码:
public class UserDaoFactoryBean implements FactoryBean<UserDao> { //创建对象 public UserDao getObject() throws Exception { return new UserDaoImpl(); } //返回对象类型 public Class<?> getObjectType() { return UserDao.class; } //设置创建的是否为单例对象 public boolean isSingleton() { return false; }
}
applicationContext.xml核心代码:
注意这里创建的不是UserDaoFactoryBean对象而是FactoryBean接口中getObject()造出来的对象。
<!--方式四:使用FactoryBean实例化bean-->
<bean id="userDao" class="com.itheima.factory.UserDaoFactoryBean"/>
bean的生命周期
bean生命周期执行的阶段
方式一
自己编写初始化与销毁方法。然后在配置文件配置。
方式二:接口方式实现(了解)
bean销毁时机
依赖注入方式
set注入引用类型
set注入简单类型
构造器注入引用类型
构造器注入简单类型
总结
强制依赖:这个bean运行必须要的东西则用强制依赖。
自动装配
集合注入
很少用到。
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"> <!--数组注入--> <property name="array"> <array> <value>100</value> <value>3300</value> <value>180</value> </array> </property>
</bean>
数组注入
<property name="array"> <array> <value>100</value> <value>3300</value> <value>180</value> </array></property>
list集合注入(重点)
<property name="list"> <list> <value>张成</value> <value>张成</value> <value>张成</value> <value>张成</value> </list></property>
set集合注入
<property name="set"> <set> <value>itcast</value> <value>itheima</value> <value>boxuegu</value> <value>boxuegu</value> </set></property>
map集合注入(重点)
<property name="map"> <map> <entry key="country" value="china"/> <entry key="province" value="henan"/> <entry key="city" value="kaifeng"/> </map>
</property>
Properties注入
<property name="properties"> <props> <prop key="country">china</prop> <prop key="province">henan</prop> <prop key="city">kaifeng</prop> </props>
</property>
案例:数据源对象管理
核心代码:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC"/>
加载properties
容器
创建容器
获取bean
第一种常用