标签:java 面向切面 依赖 案例 目的 配置文件 private system 注入
- 传统项目优点:搭建容易
- 传统项目缺点:
- service、dao 对象都是程序员手动new 出来。(没有考虑过何时销毁、没有考虑过多线程相关内容)
- 向多个方法中加入相同代码会很麻烦。(500个方法,加入一个控制台展示语句,就需要修改500次)
目的:为了
1、更加专业地管理项目中的对象
2、为了将来功能扩展更加方便、快捷
Spring框架是企业使用最多的框架,没有之一。Spring是一站式框架,称之为一站式框架的原因是Spring可以整合其他框架。
- Spring IoC:控制反转技术。(两大特征之一)
对象工厂及依赖注入;
用于管理对象的创建和销毁,用于向变量中注入实例对象
- Spring AOP:面向切面编程技术,为Spring事务管理打下基础。
不修改原来代码,就能把新代码切入到原来代码的执行中
(反射技术)(两大特征之二)
- Spring Transaction management:Spring事务管理。
程序员自己:
try{
//提交事务
}catch(Exception e){
//回滚事务
}
只需要判断需不需要抛出异常:抛出异常给spring,spring帮你自动回滚
没有抛出异常给spring,spring自动帮你提交事务
Throw new RuntimeException()
优点:搭建环境容易
缺点:
1、service、dao、JavaBean创建都是由程序员自己new(何时销毁、多线程处理)
2、功能扩展特别困难(500个方法,加入相同的2行代码,修改500次)
3、框架之间的整合特别麻烦
优点:
1、所有的对象几乎都是由spring管理(不用管创建、销毁、多线程) IOC
2、数据库事务的管理很轻松(只需要判断是否抛出异常给spring)
3、功能扩展特别容易(500个方法,加入相同的2行代码,修改1次) AOP
4、框架之间的整合只需要一个配置文件即可
缺点:1、环境搭建很麻烦
IOC:控制反转。 把对象的管理权力(创建、销毁)由程序员 反转给 spring容器。
SpringConfiguration:
/**
* spring核心配置文件
* Configuration注解:标记当前Java类是一个spring核心配置文件类
* ComponentScan注解:扫描spring需要管理的包
* basePackages:告诉spring,spring需要管理和扫描的包
*/
@Configuration
@ComponentScan(basePackages = {"com.czxy.demo1"})
public class SpringConfiguration {
}
Demo1Dao:
/**
* Component:组件。 标记当前类,由spring管理
*/
@Component("demo1Dao")
public class Demo1Dao {
public void insert(){
System.out.println("demo1Dao-insert");
}
}
Demo1Service
@Component("demo1Service")
public class Demo1Service {
private Demo1Dao demo1Dao;
public void insert(){
System.out.println("demo1Service-insert");
demo1Dao.insert();
}
}
Demo1Service
@Component("demo1Service")
public class Demo1Service {
@Resource(www.baihuayl7.cn name="demo1Dao")
private Demo1Dao demo1Dao;
public void insert(){
System.out.println("demo1Service-insert");
demo1Dao.insert(www.yifayuled.cn);
}
}
Demo1Test
public class Demo1Test www.chuancenpt.com{
@Resource(name=www.xinyueylzc.cn "demo1Service")
private Demo1Service demo1Service;
@Test
public void run1(){
demo1Service.insert();
}
}
Demo1Test
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {SpringConfiguration.class})
public class Demo1Test {
@Resource(name="demo1Service")
private Demo1Service demo1Service;
@Test
public void run1(){
demo1Service.insert();
}
}
请给努力中的自己点个赞哦!
每天进步一点点`~~~~~
标签:java 面向切面 依赖 案例 目的 配置文件 private system 注入
原文地址:https://www.cnblogs.com/woshidanzi/p/12775910.html