spring 5 框架开发
1、配置与依赖注入:
1、spring 机制:
ioc(控制反转),aop(面向切片编程)
2、配置ApplicationContext.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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--user对象创建-->
<!-- <bean id="user" class="com.qw.spring.dao.User" scope="prototype"></bean>-->
<!-- 单例模式、默认属性值,spring核心文件应用加载,容器创立的时候,对象也创立,容器销毁,对象销毁-->
<!-- <bean id="userDao" class="com.qw.spring.impl.UserDaoImpl" scope="singleton"></bean>-->
<!-- 多例模式,getbean创建bean对象,使用对象时创立,多个对象存在,时间长不被使用,被java回收机制回收-->
<bean id="userDao" class="com.qw.spring.impl.UserDaoImpl" scope="prototype"></bean>
</beans>
3、Bean的生命周期属性
<bean id="userDao" class="com.qw.spring.impl.UserDaoImpl" init-method="init" destroy-method="destory"></bean>
对象创建 init-method 初始化方法 destory-method 销毁方法
4、Bean实例化的三种构造方式
无参构造方法
工厂静态方法
public class StaticFactory {
public static UserDao getUserDao(){
return new UserDaoImpl();
}
}
<bean id="userDao" class="com.qw.spring.factory.StaticFactory" factory-method="getUserDao"></bean>
工厂实例方法
public class DynamicFactory {
public UserDao getUserDao(){
return new UserDaoImpl();
}
}
<bean id="factory" class="com.qw.factory.DynamicFactory"></bean>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"/>
![image-20210511095614878](https://i-blog.csdnimg.cn/blog_migrate/dbe6077613b7751d8a63b86df7cf53aa.png)
![image-20210511101115730](https://i-blog.csdnimg.cn/blog_migrate/7ef581c5e6ea03796a5c8fc3afc0251c.png)
5、Bean依赖注入
Ioc(反转控制)的核心是依赖注入操作业务层,业务层需要的持久层对象由spring框架传入,不需要我们自己获取
Bean的依赖注入方式:
public class UserServiceImpl implements UserService {
private UserDao userDao;
//构造方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public UserServiceImpl() {
}
//set方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
构造方法
<bean id="userService" class="com.qw.spring.service.impl.UserServiceImpl">
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
set方法
<bean id="userService" class="com.qw.spring.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao">
</property>
</bean>
6、P命名空间
<beans>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</beans>
<bean id="userService" class="com.qw.spring.service.impl.UserServiceImpl" p:userDao-ref="userDao"/>
7、Bean 的依赖注入和数据类型
普通数据类型
引用数据类型
集合数据类型
<bean id="userDao" class="com.qw.spring.dao.impl.UserDaoImpl">
<property name="stringList">
<list>
<value>aaa</value>
<!-- <ref> </ref>-->
<value>abb</value>
<value>aab</value>
</list>
</property>
<property name="userMap">
<map>
<entry key="user1" value-ref="user1"/>
<entry key="user2" value-ref="user1"/>
</map>
</property>
<property name="properties">
<props>
<prop key="p1">ppp1</prop>
<prop key="p2">ppp2</prop>
<prop key="p3">ppp3</prop>
</props>
</property>
</bean>
<bean id="user1" class="com.qw.spring.domain.User">
<property name="name" value="tom"/>
<property name="address" value="北京"/>
</bean>
<bean id="user2" class="com.qw.spring.domain.User">
<property name="name" value="lucy"/>
<property name="address" value="天津"/>
</bean>
8、分模块开发
在主配置文件中可以使用import标签引入其他配置文件,实现配置时一同加载。
9、spring的重点配置
标签
id属性:在容器当中bean的唯一标识,不可重复
class属性:要实例化的Bean的全限定名
scope属性:定义bean的作用范围
标签:属性注入
name属性:属性名称
value属性:注入的普通属性值
ref属性:注入的对象引用值
标签
标签
标签通过构造方法注入
标签:引入其他spring的分文件
10、ApplicationContext的实现类
1)ClassPathXmlApplicationContect(系统的源文件夹)
2)FileSystemXmlApplicationContext(本地磁盘)
3)AnnotaionConfigApplicationContext(注解配置对象使用)
11、getBean()方法使用
public Object getBean(String name) throws BeansException{
assertBeanFactoryActive();
return getBeanFactory().getBean(name);
}
public <T> T getBean(Class<T> requireType) throws BeansExpcetion{
assertBeanFactoryActive();
return getBeanFactory().getBean(requiredType);
}
12、知识要点
Spring重点API
ApplicationContext context = new ClassPathXmlApplicationContext("resource中的xml");
context.getBean("id");
context.getBean(class)
2、Spring配置数据源
1、数据源(连接池)的作用
●数据源(连接池)是提高程序性能如出现的
●事先实例化数据源,初始化部分连接资源
●使用连接资源时从数据源中获取
●使用完毕后将连接资源归还给数据源
常见的数据源:DBCP、C3P0、BoneCp、Durid
开发步骤:
①导入数据源的坐标和数据库驱动坐标
②创建数据源对象
③设置数据源的基本连接数据
④使用数据源获取资源和归还连接资源