spring框架

介绍

下面代码是spring框架的简单运用,是比较简单的方法

框架的概念

可以理解为半成品,提高开发的效率。 框架可以帮个程序员做很多 重复性的工作,让程序员把很多的精力放在逻辑开发上,而不是写重复性代码。 例如: Spring 框架 可以帮我们进行对象的实例化,实现对象的管理: 例如 mybatis 框架可以自动创建数据库的连接,自动进行数据的转换等。 ####spring 框架 用一个词来形容框架 : 解耦( ) 

spring框架包结构 spring框架详解_java

####Spring两个核心概念 IOC: inverse of controller 控制反转 依赖注入

不用手动new对象了 ,而是容器提前实例化号对象 ,我们只需要 从容器中获取即可。 本来需要你做的事情 ,反转了 ,别人帮你做 你只需要调用即可。

AOP: aspect oriented programming 面向切面编程 在不改变源代码 的情况下 ,动态织入代码 ,增强源代码的功能。

底层是动态代理 , 动态代理底层是反射。

####框架搭建

spring 框架 可以运行在普通 java 项目中 , 可以运行在web项目中。

1.搭建一个普通的java 项目 , 整合spring框架

a . 创建一个新的项目 b.引入spring的jar 包 c.创建spring 的配置文件 d.测试

最重要的两部: 1.引入需要的jar包 2.创建对应的配置文件

我们创建的 applicationContext.xml 文件可以理解为一个容器 Spring 框架 启动后会通过读取配置文件初始化一个容器(一块内存空间) 根据配置文件中的内容 , 实例化各个对象 , 然后把对象放到容器中进行管理。 每个对象的声明周期全部交给容器管理。

####第二种搭建方式

搭建一个 maven 项目 , 让 maven管理依赖

maven + web 项目

####分层开发 后期开发 controller ------service ----dao controller: 可以理解为servlet ,控制器 根据不同的请求 ,调用对应的service 实现业务逻辑

service 业务层 通过调用dao层 不同方法的组合 , 达到预期的业务效果。

dao:数据库操作层 基本的增删改查 , 尽量不要设计到业务逻辑,提高通用性 通用性高,那么dao层的代码可以写的写的更少 例如: 转账 转账从业务层讲一个操作,技术转账; 从数据操作层 面来说 , 是两个操作 , 分别 是余额的减少 , 一个余额的增加。

用service 层 对 dao 层进行一次封装, 便于 controller 的调用。

spring框架包结构 spring框架详解_spring_02

service 调用dao的时候不能再new 了 userDao 应该从容器中获取,这样才能充分发挥容器的作用

装配对象 service 需要 dao 对象 , 再容器中进行装配

####自动装配 1.加载配置文件,初始化容器 2.实例化userDao 对象,实例化 userService 对象 调用 setDao方法 ,把容器中的 userDao 实例给userService中的dao属性 3.再main方法中调用Service的转账操作 4.再service对象中调用dao实现账户余额的新增和减少

这里通过 set方法实现对象的装配 。 设值注入 注意 

spring框架包结构 spring框架详解_java_03

想要实现对象的自动装配,所有的对象都必须来自容器。不一定一部分是new的,另一部分是来自容器。

开发中,推荐使用注解 

spring框架包结构 spring框架详解_java_04

 UserDao 应该变成一个接口 , spring 容器扫描到 @Autowired主键的时候,会去找此接口的实现类的对象,然后把此对象赋值给 @Autowired 所修饰的属性 优点: 不需要 写set 方法 , 也不需要写构造方法,再配置文件中也不需要装配

####总结: 自动注入的时候,用到了四个注解

@Repository 修饰dao层的类(针对数据库) @Service 修饰service层的类(针对业务) @Controller 修饰控制器 () @Autowired 自动装配

####实例化对象的时候给属性赋值 开发中只需要实例化对象 ,基本不需要给对象的属性赋值。

####作用域问题

spring框架包结构 spring框架详解_spring框架包结构_05

spring框架包结构 spring框架详解_spring_06

 singleton: 单例模式

prototype : 每次请求,都会返回一个新的实例 

spring框架包结构 spring框架详解_实例化_07