老版本的基础知识
- IoC:控制反转。类A引用类B,如果我们要更改类A引用类C,那么程序就要再测试,发布一次,浪费资源,因此我们可以不在类A中写上new B(),将对象放入Bean层中,需要的时候从Bean层中取,就叫IoC。
- DI:依赖注入:如果Bean层中有些类之间有依赖关系(A引用C),那么我们就在Bean层中把这个问题一并解决了。
- 配置文件:如何从Bean层中取对象呢?
配置文件(ApplicationContext.xml)中写入以下内容:
在需要的地方取对象:
- DI依赖注入的配置:
- Bean可以有别名:
- Bean造出来的对象都是单例对象,如果不想是单例对象可以修改
- Bean实例化的方式就是调用相应类的空参构造方法
- 如果想从工厂类中改写为IoC形式
静态工厂(了解):
实例工厂(了解):
FactoryBean:用这个方法会自动调getObject方法
- Bean的生命周期:
- setter注入与构造器注入:
对于一个类中的属性是其他类或者基本属性,两个注入又分为简单类型与引用类型
setter注入:
构造器注入:
- 自动装配:(按照BookServiceImpl中引用的类型(BookDao)在配置文件中找这个类型去返回)
(一般一个类不会配置两遍Bean,所以不用担心重复问题)
- 集合注入:
- 加载Properties文件:
先设置一个context空间
表示读取全部的properties文件
对properties文件内的属性进行读取
注解开发:
- @Component(id):相当于把当前类作为Bean写入配置文件(id:自己起的名)
如果做表现层业务层数据层的开发也可以用:@Controller和@Service和@Repository
- @ComponentScan(name):扫描name写的包名,扫描到各种Bean(写@Component的类)
- @Mapper:1,2相配合进行使用,也可以1,2都不使用,而是在Dao接口上写@Mapper
- @Bean:管理第三方Bean时使用,表示接下来这个方法返回的是一个Bean
- @Configuration:设置当前类为配置类,代替配置文件起作用
- @PropertySource(xxx)表示读取配置文件
- @Scope():表示当前类是否作为单例出现,singleton or prototype
- @Autowired:依赖注入时,在引用的类上写@Autowired就行。因为是按类型自动装配,因此如果要有多个同类型类,未了确定具体引用哪一个,@Autowired下加上@Qualifier(id)即可
- @PathVariable:表示获取前端url上的参数
- @RequestBody:表示以json格式获取前端传来的数据,跟post搭配使用
整合MyBatis与JUnit:
MyBatis:
只需要在config包下加一个MyBatisconfig类就行了,并且原来的MybatisConfig.xml可以不写了
一个包别名,一个是mapper,中间的url,password.....都写在了jdbc.properties文件中,在主配置类中读取jdbc.properties就行了。
JUnit:
- pom文件中加两个依赖
- 之后测试类这么写就可以了
AOP:面向切面编程:
- 概念:在不改动原有代码的基础上增强功能的实现(以代理形式在工作)
- 实现:
- pom.xml添加依赖:
- 在主包下加一个aop包再加一个类写:
@Component:让Spring扫描这个包
@Aspect:表示这是一个AOP接口
@Pointcut:定义一个切入点,当执行到execution内的方法时,执行切入
@Before:先切入(先执行method方法),再进行update方法
@Around
- 在spring.config方法上加,表示有aop需要被扫描
- 切入点表达式:
- 案例:
- 如果要打印返回值,还可以在获取后输出之前修改参数(防止格式出问题)
事务:
- 为了实现原子性事务的一致性,我们首先要在实现类对应接口方法上加注解@Transactional,由于部分·异常是不执行回滚的,我们定义,让程序回滚
- 在Spring配置类加上事务管理器与注解
- 事务的传播行为:如果我们要实现日志与事务的分离,保证事务出错回滚后日志仍记录,就需要给日志创建一个新的事务,在日志实现类对应的接口方法上加注解
标签:事务,配置文件,Spring,Bean,引用,properties,注入 From: https://www.cnblogs.com/miraclemaker/p/17203197.html