第一天 spring概念和ioc入门(ioc操作和xml配置文件)
第二天 spring的ioc操作(注解)和aop概念
第三天 jdbcTemplate和spring管理事务
第四天 ssh框架整合开发
今天的内容介绍
- spring概念
(1) spring核心两部分
(2) spring一站式框架
(3) spring版本
aop
面向切面编程,扩展功能不是修改源代码实现。
ioc
控制反转
比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象。
使用对象调用方法,创建类对象的过程,需要new出来对象
把对象的创建不是通过new方式实现,而是交给spring配置创建类对象。
spring是一站式框架
spring在javaee三层结构当中,每一层都提供了不同的解决技术。
hibernate是在DAO层
struts2是在web层
- web层: springMVC
- service层:spring IOC
- DAO层: spring jdbcTemplate
spring版本
hibernate5.x
spring4.x
spring的ioc操作
把对象的创建交给spring进行管理
ioc操作两部分:
- ioc的配置文件方式
- ioc的注解的方式
ioc的底层的原理
- ioc底层原理使用技术
- xml配置文件
- dom4j解析xml
- 工厂设计模式
- 反射
ioc底层原理
public class User{
public void add(){
......
}
}
//在servlet当中调用类里面的方法
User user = new User();
user.add();
基本缺陷:类名和方法名修改的话,具有耦合性修改。
第一种使用工厂方式来解耦合的操作
public class UserService{
public void add(){
}
}
public class UserServlet{
UserService s = Factory.getService();
s.add();
}
//解决方案,创建工厂类
public class Factory{
//提供返回UserService对象的方法
public static UserService getService(){
return new UserService();
}
}
servlet和工厂类耦合
开发思想:高内聚,低耦合
ioc的底层的原理是怎么样的。
把我们的对象创建,用配置文件的方式,进行实现。
public class UserService{
}
public class UserServlet{
//得到userService对象
//最原始的做法就是new创建的
UserFactory.getService
}
第一步操作:创建xml配置文件,配置要创建的对象类
<bean id="userService" class="cn.itcast.UserService"/>
</bean>
第二步操作: 创建工厂类,使用dom4j解析配置文件+反射
public class UserFactory{
//返回userService对象的方法
public static UserService getService{
//1. 使用dom4j解析xml文件
//根据id值userService,得到id值对应class属性值
String classValue = "class属性值是类的路径";
//2. 使用反射创建类的对象
Class clazz=Class.forName(classValue);
//创建类对象
UserService service = clazz.newInstance();
return service;
}
}
1. xml配置类的id和路径
2. dom4j解析xml
3. 通过Class.forName通过类的路径创建类
4. 通过反射创建实例
IOC入门案例
第一步 导入jar包
第二步 创建类,在类当中创建方法
第三步 创建spring配置文件,配置创建类
第四步,写代码测试对象创建
spring-framework-4.2.4.RELEASE-dist.zip
jar特点:都有三个jar包
spring-beans-4.2.4-RELEASE.jar
spring-beans-4.2.4-RELEASE.
spring-beans-4.2.4-RELEASE.jar
scope当中的属性值
singleton:单例的,默认值
prototype:多例的,管理action创建的时候,就是prototype
request:创建对象把对象放到request域里面。
session:创建对象把对象放到session域里面。
globalSession:创建对象把对象放到globalSession域里面。
redis数据库来实现单点登录。
什么叫做属性注入
创建对象的时候,向类里面的属性里面设置值。
属性注入方式的介绍
Java代码当中的属性注入
创建对象的时候,向类当中的属性设置值。
- 有参构造器
public class User(){
private String name;
public User(String name){
this.name = name;
}
}
User user = new User("lucy");
- set方法
public class User{
private String name;
public void setName(String name){
tihs.name = name;
}
}
User user = new User();
user.setName("abcd");
- 使用接口注入
public interface Dao{
public void delete(String name);
}
public class DaoImpl implements Dao {
private String name;
public void delete(String name){
this.name = name;
}
}
在spring框架当中,支持前面两种方式:set方法注入和有参数构造器的方法注入。
那么在spring当中怎么实现呢?
在实际使用当中,使用最多的就是set方法的使用。
使用有参数构造器注入
<bean name="demo" class="cn.itcast.property.PropertyDemo1">
<!-- bean标签当中有参数的构造器进行注入 -->
<constructor-arg name="username" value="小王小马"></constructor-arg>
</bean>
使用set方式进行注入(重点)
开发当中一般使用的就是这种方法!
<bean id="book" class="cn.itcast.property.Book">
<!-- 注入属性值
name当中的属性值,就是类当中定义的属性的名称。
value属性,就是我们设置的具体的值。
-->
<property name="bookname" value="易筋经"></property>
</bean>