spring框架
介绍
下面代码是spring框架的简单运用,是比较简单的方法
框架的概念
可以理解为半成品,提高开发的效率。 框架可以帮个程序员做很多 重复性的工作,让程序员把很多的精力放在逻辑开发上,而不是写重复性代码。 例如: Spring 框架 可以帮我们进行对象的实例化,实现对象的管理: 例如 mybatis 框架可以自动创建数据库的连接,自动进行数据的转换等。 ####spring 框架 用一个词来形容框架 : 解耦( )
####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 的调用。
service 调用dao的时候不能再new 了 userDao 应该从容器中获取,这样才能充分发挥容器的作用
装配对象 service 需要 dao 对象 , 再容器中进行装配
####自动装配 1.加载配置文件,初始化容器 2.实例化userDao 对象,实例化 userService 对象 调用 setDao方法 ,把容器中的 userDao 实例给userService中的dao属性 3.再main方法中调用Service的转账操作 4.再service对象中调用dao实现账户余额的新增和减少
这里通过 set方法实现对象的装配 。 设值注入 注意
想要实现对象的自动装配,所有的对象都必须来自容器。不一定一部分是new的,另一部分是来自容器。
开发中,推荐使用注解
UserDao 应该变成一个接口 , spring 容器扫描到 @Autowired主键的时候,会去找此接口的实现类的对象,然后把此对象赋值给 @Autowired 所修饰的属性 优点: 不需要 写set 方法 , 也不需要写构造方法,再配置文件中也不需要装配
####总结: 自动注入的时候,用到了四个注解
@Repository 修饰dao层的类(针对数据库) @Service 修饰service层的类(针对业务) @Controller 修饰控制器 () @Autowired 自动装配
####实例化对象的时候给属性赋值 开发中只需要实例化对象 ,基本不需要给对象的属性赋值。
####作用域问题
singleton: 单例模式
prototype : 每次请求,都会返回一个新的实例