【笔记】spring

1.简介

Spring 是一个容器,可以管理对象,创建对象时自动注入值,开源框架,简化开发,不用创建对象,减少依赖,解耦。核心是IOC。
优点:非侵入式、可以整合其他框架、可以管理对象。

2.IOC

定义

控制反转(Inversion of control),不用自己new对象,由框架去创建,核心是反射机制。

DI(Dependency Injection)

依赖注入,spring通过DI实现了IOC

实现DI的三种方式

  1. 构造器注入
  2. setter方法注入
  3. 接口注入

3.spring的三种配置方式

1.xml

applicationContext.xml,配置bean,加载配置文件,获取spring容器,获取对象

<beans> 
 <bean id="myService" class="com.somnus.services.MyServiceImpl"/> 
</beans>

2.基于 Java 配置的方式

@Configuration 
public class AppConfig{ 
	@Bean 
	public MyService myService() { 
		return new MyServiceImpl(); 
	} 
}
public static void main(String[] args) { 
	ApplicationContext ctx = new
	AnnotationConfigApplicationContext(AppConfig.class); 
	MyService myService = ctx.getBean(MyService.class); 
	myService.doStuff();
 }

3.注解

@Autowired
@Qualifier(" ")

java自带的@Resource=@Autowired+@Qualifier(" ")

4.bean的生命周期

  1. 通过构造器或工厂方法创建bean实例
  2. 为bean属性设置值,和对其他bean的引用
  3. 调用bean的init()
  4. 使用bean
  5. 容器关闭时,销毁bean,调用destroy()

拓展方法管理生命周期@PostConstruct、@PreDestroy

5.bean的作用域

  1. singleton:单例、默认
  2. prototype:多例
  3. request:一次请求后会被回收
  4. session:session过期后,bean会随之失效
  5. global- session

6.spring框架中的设计模式

  1. 代理模式:aop
  2. 单例模式:bean默认为单例模式
  3. 工厂模式:BeanFactory 用来创建对象的实例

7.SpEL(Spring Expression Language)

spring表达式

#{beanID.属性名}

8.组件扫描

只是配置了组件扫描,并不会创建类的对象,需要给类加注解

<context:component-scan base-package=" " />

常用注解

功能等效,语义不同,便于开发人员理解区分

@Component
@Controller
@Service
@Repository

9.AOP

面向切面编程,是oop的补充,通过预编译方式和运行期动态代理实现,可以将各部分的业务逻辑隔离,解耦,提高重用性和开发效率。
使用了设计模式中的代理模式

例子

日志

使用

切面:@Aspect
切点:@Pointcut
通知注解:

// JointPoint
@Before
@After
@AfterThrowing
@AfterReturning
// ProceedingJointPoint 是JointPoint的子接口
@Around

切面优先级:值越小,优先级越高

@Aspect
@Order(0)
@Aspect
@Component
public class Demo {

	@Pointcut("excution(* com.dyn.demo.aop.*.*(..))")
	public void excudeService(){}
	
	@Around("excudeService()")
	public Object doAround  (ProceedingJoinPoint joinPoint) throws Throwable{
		joinPoint.proceed();
	}
}

10.事务

rollbackFor:指定回滚的异常类型

@Transactional

11.常用注解

发布了37 篇原创文章 · 获赞 0 · 访问量 1131

猜你喜欢

转载自blog.csdn.net/qq_25046005/article/details/104685807
今日推荐