Spring核心
- IOC inverse of 反转控制
使用了Spring以后 对象可以通过XML格式 采用Bean类的规范存储,对象的创建以及依赖关系可以由Spring完成创建以及注入,反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序(Spring) - DI dependency injection
实现IOC需要用DI做主持,目前没demo还没看到
Spring是为了解决企业应用开发的复杂性而创建的,是一个轻量级的控制反转(IoC)[指的是将对象的创建权反转给Spring,作用是实现了程序的解耦合]和面向切面(AOP)的容器框架。
- XML用于数据交换的文件,因此bean放在xml随取随用 有点像键值对应的Session
实验一 Bean的创建 和 Spring创建对象的三种方式
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!--将User对象交给spring容器管理 ,其中name任意,class为全包名
class属性:被管理对象的完整类名
name属性:给被管理的对象起个名字,根据该名称获得对象
可以重复,可以使用特殊字符
id属性:与name属性一模一样
名称不可重复,不能使用特殊字符
结论:尽量使用name属性
-->
<bean name="user" class="com.sjtu.bean.User"></bean>
</beans>
<!--创建方式1:空参构造创建 -->
<bean name="user" class="com.sjtu.bean.User"></bean>
创建容器对象,相对于src下的路径
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
实验二 属性注入(DI)
- set方法注入
<bean name="user" class="com.sjtu.bean.User" >
<!--值类型注入:为User对象中名为name的属性注入tom作为值-->
<property name="name" value="tom"></property>
<property name="age" value="18"></property>
<!--引用类型注入:为car属性注入下方配置的car对象 car是user中一个对象-->
<property name="car" ref="car"></property>
</bean>
<!--将car对象配置到容器中 -->
<bean name="car" class="com.sjtu.bean.Car">
<property name="name" value="兰博基尼"></property>
<property name="color" value="黄色"></property>
</bean>
使用注解配置Spring
-
Spring中的注解大概可以分为两大类
1.Spring的bean容器相关的注解,或者说bean工厂相关的注解
2.Spring MVC的相关注解 -
Bean容器相关注解有
@Required
@Autowired(自动装配)
@PostConstruct
@PreDestory
以及和值的注入有关的注解如
@Value
@Scope
SpringMVC相关的注解有
@Controller
@RequestMapping
@RequestParam
@ResponseBody -
首先理解Java的注解 @Override 等 然后了解Spring为什么引入注解,如何使用,常用注解有哪些 等等
-
还有Spring的AOP思想 没怎么看懂
AOP 底层的结构 很神奇的操作
AOP 面向切面的编程 好好的一段源代码,可以在运行的时候,给你注入一些行为,方法前 方法后,进行一些
其实是 写一段新的代码 替换 原来的代码
做事务处理的时候 事务 常常需要保证原子性,需要在上下文Context的信息,
常常用AOP的方式,注入前后文Context的信息,如果记录失败的话 都会做回退
具体实现就有点复杂了
装载时候注入 load这个对象的时候 注入一些东西 这一块可以暂时放一放
Alert 就变成原子特性的事务
不需要程序硬编码
把数据和逻辑代码分离 ,因此 现在算法或者模型更新,只需要换逻辑代码即可
网友评论