1.术语了解
1.1组件/框架设计
侵入式设计
引入了框架,对现有的类的结构有影响;即需要实现或继承某些特定类。
例如: Struts框架
非侵入式设计
引入了框架,对现有的类结构没有影响。
例如:Hibernate框架 / Spring框架
控制反转:
Inversion on Control , 控制反转 IOC
对象的创建交给外部容器完成,这个就做控制反转.
依赖注入:
dependency injection
处理对象的依赖关系
区别:切面举例:事务、日志、权限;
1.2 Spring框架
Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架。
且可以和其他框架一起使用;Spring与Struts, Spring与hibernate
(起到整合(粘合)作用的一个框架)
Spring提供了一站式解决方案:(Spring六大模块)
1) Spring Core spring的核心功能: IOC容器, 解决对象创建及依赖关系
2) Spring Web Spring对web模块的支持。
- 可以与struts整合,让struts的action创建交给spring
- spring mvc模式
3) Spring DAO Spring 对jdbc操作的支持 【JdbcTemplate模板工具类】
4) Spring ORM spring对orm(对象关系映射)的支持:
既可以与hibernate整合,【session】
也可以使用spring的对hibernate操作的封装
5)Spring AOP 切面编程
6)SpringEE spring 对javaEE其他模块的支持
spring各个版本中:
在3.0以下的版本,源码有spring中相关的所有包【spring功能 + 依赖包】
如2.5版本;
在3.0以上的版本,源码中只有spring的核心功能包【没有依赖包】
(如果要用依赖包,需要单独下载!)
1) 源码, jar文件:spring-framework-3.2.5.RELEASE
commons-logging-1.1.3.jar 日志
spring-beans-3.2.5.RELEASE.jar bean节点
spring-context-3.2.5.RELEASE.jar spring上下文节点
spring-core-3.2.5.RELEASE.jar spring核心功能
spring-expression-3.2.5.RELEASE.jar spring表达式相关表
以上是必须引入的5个jar文件,在项目中可以用户库管理!
2) 核心配置文件: applicationContext.xml
Spring配置文件:applicationContext.xml / bean.xml
2.开发步骤
首先新建项目,引入spring的架包,
项目包下新建xml文件,一般命名为applicationContext.xml或者bean.xml,这里以bean.xml命名。
先在其中加入以下代码
实体类User
public class User {
private int id;
private String name;
/////////通过容器注入属性值
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
/////////
public int getId() {
return id;
}
public String getName() {
return name;
}
public User() {
System.out.println("无参构造器");
}
public User(int id, String name) {
super();
System.out.println("有参构造器");
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
public void init_user() {
System.out.println("init");
}
public void destroy_user() {
System.out.println("destroy");
}
}
bean.xml文件目录配置
调用实例化实体类
public class App2Bean {
//得到IOC容器对象
private ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("com/th/test1/bean.xml");
@Test
public void testIOC() throws Exception {
System.out.println("容器创建");
//从容器中获取bean
User user1 = (User) ac.getBean("user"); //此处user就是在bean.xml中配置的id为user的对象
User user2 = (User) ac.getBean("user");
System.out.println(user1);
System.out.println(user2);
//销毁容器
ac.destroy();
}
}
例子2:创建对象的几种方式
工厂类:
public class ObjectFactory {
//实例方法创建对象
public User getInstance(){
return new User(100,"调用实例方法");
}
//静态方法创建对象
public static User getStaticInstance(){
return new User(100,"调用静态实例方法");
}
}
bean.xml配置文件
对象依赖关系
UserDao代码:
public class UserDao {
public void save() {
System.out.println("DB:保存用户");
}
}
UserService代码:
public class UserService {
private UserDao userDao;
//IOC:对象的创建交给Spring的外部容器完成
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void save() {
userDao.save();
}
}
UserAction代码
public class UserAction {
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public String execute() {
userService.save();
return null;
}
}
bean.xml配置
P名称空间实现对象依赖
bean.xml配置
自动装配:
http://www.springframework.org/schema/context/spring-context.xsd" default-autowire="byName">