1.spring是轻量级框架(一站式)
2.核心有两个部分:
a.aop 面向切面编程,扩展功能不是修改源码
b.ioc 控制反转
3. web层:springMVC
service层:spring的ioc
dao层:spring的jdbcTemplate
4.使用的版本 spring4.x
ioc操作
配置文件
注解
IOC 底层原理
(1)xml配置文件
(2)dom4j解决xml
(3)工厂设计模式
(4)反射
ioc原理
public class UserService{
}
public class Userservlet{
得到UserService的对象
}
第一步:
创建xml配置文件,配置要创建的对象类
<bean id="UserService" class="UserService">
第二步 创建工厂类,使用dom4j解析配置文件+反射
public class UserFactory{
public static UserService getService(){
String classValue="class属性值";
// 使用反射创建类对象
Class clazz=Class.forName(classValue);
//创建类的对象
UserService service=clazz.newInstance();
return service;
}
}
spring的bean管理(xml配置文件)
(1)通过配置文件创建对象
(2)bean实例化三种方式
使用类的无参数构造创建(重点)
类中没有无参构造,会出现错误
<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">
<bean id="user" class="ioc.User"></bean>
</beans>
使用静态工厂创建
(1)创建静态方法,返回类对象
<bean id="bean2" class="bean.Bean2Factory" factory-method="getBean2"></bean>
使用实例工厂创建
(1)创建不是静态方法,返回类对象
<bean id="bean3Factory" class="bean.Bean3Factory"></bean>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
测试类中的内容
ApplicationContext context=new ClassPathXmlApplicationContext("xml");
User user= (User) context.getBean("user");
调用方法
Bean标签常用属性
1.id 不能包含特殊的符号 根据id得到配置对象
2.class 创建对象所在类的全路径
3.name 功能和id一样,id的属性值不能包含特殊符号
4.scope singleton:默认值,单例的
prototype:多例的
request:创建对象把对象放到request域里面
session session
globalSession globalSession
属性的注入:
1.创建对象时,向类里面的属性设值
2.属性注入的方式介绍
(1)使用set方法 (重要)
(2)有参数构造注入
(3)使用接口注入 (不常用)
spring框架中支持前两种 set常用
<bean id="" class="">
<property name="类中属性名" value=""></property>
</bean>
注入对象类型属性(重点)
1.创建service类和dao类
在service创建dao对象
2.具体实现过程
(1)在service中把dao作为属性类型
public class UserDao{
System.out.println("dao...........");
}
public class UserService{
private UserDao userDao;
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
public void add(){
System.out.println("service...........");
userDao.add();
}
}
配置service和dao对象
<bean id="userDao" class="UserDao路经"></bean>
<bean id="UserService" class="UserService路经">
ref属性:dao配置bean标签中id值
<property name="userDao" ref="userDao"></property>
</bean>
P名称空间的注入
xmlns:p="http://www.springframework.org/schema/p"
<bean id="" class="" p:pname=""></bean>
注入复杂类型属性:
数组:
list:
map:
properties:
<bean id="" class="">
<property name="arrs"> 数组中复赋值
<list>
<value></value>
<value></value>
<value></value>
</list>
</property>
<property name="list">
<list>
<value></value>
<value></value>
<value></value>
</list>
</property>
<property name="map">
<map>
<entry key="" value=""></entry>
<entry key="" value=""></entry>
<entry key="" value=""></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="driverclass">com.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>
</bean>
IOC和DI的区别
(1)IOC:控制反转,把对象创建交给spring进行配置
(2) DI:依赖注入,向类里面的属性中设置值
(3) 关系:依赖注入不能单独存在,需要在ioc的基础之上完成操作
加载spring核心配置文件
ApplicationContext context=new ClassPathXmlApplicationContext("xml");
功能可以实现,但是效率很低
把加载配置文件和创建对象过程,在服务器启动时完成
实现原理
ServletContext对象
监听器
在服务器启动时候,为每个项目创建一个ServletContext对象
在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候创建
使用监听器听到ServletContext对象创建时候
加载spring配置文件,把配置文件配置对象创建
把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
获取对象时,到ServletContext域得到(getAttribute方法)
2.核心有两个部分:
a.aop 面向切面编程,扩展功能不是修改源码
b.ioc 控制反转
3. web层:springMVC
service层:spring的ioc
dao层:spring的jdbcTemplate
4.使用的版本 spring4.x
ioc操作
配置文件
注解
IOC 底层原理
(1)xml配置文件
(2)dom4j解决xml
(3)工厂设计模式
(4)反射
ioc原理
public class UserService{
}
public class Userservlet{
得到UserService的对象
}
第一步:
创建xml配置文件,配置要创建的对象类
<bean id="UserService" class="UserService">
第二步 创建工厂类,使用dom4j解析配置文件+反射
public class UserFactory{
public static UserService getService(){
String classValue="class属性值";
// 使用反射创建类对象
Class clazz=Class.forName(classValue);
//创建类的对象
UserService service=clazz.newInstance();
return service;
}
}
spring的bean管理(xml配置文件)
(1)通过配置文件创建对象
(2)bean实例化三种方式
使用类的无参数构造创建(重点)
类中没有无参构造,会出现错误
<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">
<bean id="user" class="ioc.User"></bean>
</beans>
使用静态工厂创建
(1)创建静态方法,返回类对象
<bean id="bean2" class="bean.Bean2Factory" factory-method="getBean2"></bean>
使用实例工厂创建
(1)创建不是静态方法,返回类对象
<bean id="bean3Factory" class="bean.Bean3Factory"></bean>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
测试类中的内容
ApplicationContext context=new ClassPathXmlApplicationContext("xml");
User user= (User) context.getBean("user");
调用方法
Bean标签常用属性
1.id 不能包含特殊的符号 根据id得到配置对象
2.class 创建对象所在类的全路径
3.name 功能和id一样,id的属性值不能包含特殊符号
4.scope singleton:默认值,单例的
prototype:多例的
request:创建对象把对象放到request域里面
session session
globalSession globalSession
属性的注入:
1.创建对象时,向类里面的属性设值
2.属性注入的方式介绍
(1)使用set方法 (重要)
(2)有参数构造注入
(3)使用接口注入 (不常用)
spring框架中支持前两种 set常用
<bean id="" class="">
<property name="类中属性名" value=""></property>
</bean>
注入对象类型属性(重点)
1.创建service类和dao类
在service创建dao对象
2.具体实现过程
(1)在service中把dao作为属性类型
public class UserDao{
System.out.println("dao...........");
}
public class UserService{
private UserDao userDao;
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
public void add(){
System.out.println("service...........");
userDao.add();
}
}
配置service和dao对象
<bean id="userDao" class="UserDao路经"></bean>
<bean id="UserService" class="UserService路经">
ref属性:dao配置bean标签中id值
<property name="userDao" ref="userDao"></property>
</bean>
P名称空间的注入
xmlns:p="http://www.springframework.org/schema/p"
<bean id="" class="" p:pname=""></bean>
注入复杂类型属性:
数组:
list:
map:
properties:
<bean id="" class="">
<property name="arrs"> 数组中复赋值
<list>
<value></value>
<value></value>
<value></value>
</list>
</property>
<property name="list">
<list>
<value></value>
<value></value>
<value></value>
</list>
</property>
<property name="map">
<map>
<entry key="" value=""></entry>
<entry key="" value=""></entry>
<entry key="" value=""></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="driverclass">com.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>
</bean>
IOC和DI的区别
(1)IOC:控制反转,把对象创建交给spring进行配置
(2) DI:依赖注入,向类里面的属性中设置值
(3) 关系:依赖注入不能单独存在,需要在ioc的基础之上完成操作
加载spring核心配置文件
ApplicationContext context=new ClassPathXmlApplicationContext("xml");
功能可以实现,但是效率很低
把加载配置文件和创建对象过程,在服务器启动时完成
实现原理
ServletContext对象
监听器
在服务器启动时候,为每个项目创建一个ServletContext对象
在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候创建
使用监听器听到ServletContext对象创建时候
加载spring配置文件,把配置文件配置对象创建
把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
获取对象时,到ServletContext域得到(getAttribute方法)