-
ApplicationContext 有三个实现类:1. ClassPathXmlApplicationContext : 用于读取类路径下的配置文件,创建IOC容器;
2. FilePSystemXmlApplicationContext :用于读取文件系统中的配置文件,创建IOC容器;
3. AnnotationCOnfigApplicationContext: 用于读取注解类来创建IOC容器。 -
ApplicationContext 和 BeanFactory 的区别:BeanFactory:采用延迟加载的思想创建bean对象,就是什么时候用,什么时候创建对象。
AplicationContext :具备BeanFactory 的功能,同时默认采用的立即加载的思想来创建bean 对象。可以根据配置调整为延迟加载。 -
创建bean 对象的三种形式: 1. 使用默认构造函数创建。要求必须有默认构造函数。默认构造函数不能有参数。
都是在配置文件中创建对象 2. 使用工厂中的方法创建(静态工厂,即创建对象的方法是静态方法)
3. 使用工厂中的方法创建(非静态工厂,即创建对象的方法是非静态方法)
实际开发中,我们大多使用构造函数,因为是我们自己写的类,但是第三方提供的代码中,我们大多使用第二种或第三种。例如Mybatis中SQL Session的创建。 -
bean 对象的作用范围改变:spring 中对象创建默认是单例模式的,可以通过配置改变。配置的属性是bean 标签的scope 属性。取值有:1. singleton:单例模式(默认);2. prototype:多例模式
-
bean 对象的生命周期:
1. 单例对象:出生:在IOC容器创建,对象出生。 容器在,对象就一直可以用。 容器销毁,对象消亡。
2. 多例模式:什么时候用,什么时候创建对象。 在使用过程中,一直活着,,对象的销毁交给java 的垃圾回收器回收 -
spring 的依赖注入有三种方式:1. 使用构造函数注入:在xml文件中配置使用标签《constructor-arg 》 标签的属性有:type、index、name、value、ref(指其他bean 对象)
2. 使用set 方法注入:在xml文件中配置,涉及的标签:《property》 其属性有:name、value、ref。
3. 使用注解注入: -
使用spring 的ioc实现CRUD步骤:创建maven 导入依赖->创建数据库和写实体类->编写持久层代码 接口和实现类->编写业务层代码->创建配置文件导入约束->配置对象bean和数据源、
-
使用注解步骤:创建maven 导入坐标->使用@Component注解配置管理的资源->创建spring的xml 文件配置文件对注解的支持<context:component-scan base-package> 告诉spring要扫描的包-
-
常用的注解:
用于创建对象的: 相当于《bean id=“” class="">
@Component
@Controller 用于表现层的注解。 @Service 用于业务层的注解。 @Repository:一般用于持久层的注解。用于注入数据的: 相当于: <property name="" ref=""> <property name="" value=""> @Autowired 自动注入 @Qualifier :属性:value :指定的bean 的id。 与 @Autowired 一起使用。 @Resource :直接按照bean 的id 注入。 属性:name:指定bean 的id @Value :注入基本类型和String 类型的。 属性:value:用于指定值。 用于改变作用范围的: 相当于:<bean id="" class="" scope=""> @Scope 指定bean 的作用范围。 属性:value取值有:singleton、prototype、request、session、 和生命周期有关的: 相当于: :<bean id="" class="" init-method="" destroy-method="" /> @PostConstruct 用于指定初始化方法 @PreDestroy 用于指定销毁方法。
-
spring 中的新注解:
@ComponentScan:用于指定spring在初始化容器时要扫描的包,相当于<context:component-scan base-package="">是一样的。
@PropertySource:用于指定peoperties 文件的位置:属性value:用于指定文件位置,可以使用classpath: 关键字。
@PropertySource(“classpath:jdbc.properties”)
@Bean : 把当前的方法的返回值存入ioc容器。 属性:name:指定bean的id
@Configuration 指定当前类是一个spring的配置类。
@Import 引入其他配置类。 -
通过注解获取容器:ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class);
-
动态代理:特点:字节码随用随加载。 分类:基于接口的动态代理和基于子类的动态代理。 作用:在不修改源码的基础上对方法进行增强。
-
AOP: a.连接点:业务层中的方法
b. 切入点:在连接点中(也就是业务层的方法)被增强了的方法叫做切入点。
c.通知:抽取了重复代码的类叫做通知,因为抽取的类中方法的不同,通知又分为:前置通知、后置通知、异常通知、最终通知。
d.切面:建立对应关系的过程。是切入点和通知的结合。 -
spring 基于XML 的aop 配置步骤:a. 导入aspectJ 的坐标。 b. 吧通知类交给spring 来管理。
c. 使用 aop:config标签开始aop 配置。 D.使用aop:aspect 标签配置切面。
d. 在aop:aspect标签内部,使用对应的标签配置通知类型。 -
切入点表达式:通常情况下,我们都是对业务层的方法进行增强,所以切入点表达式都是切到业务层实现类。
execution(* com.itheima.service.impl..(…)) -
spring 为我们提供的功能类:操作关系型数据库的:JdbcTemplate、HibernateTemplate。 b. 操作nosql 数据库的:RedisTemplate。 c.操作消息队列的:JmsTemplate。
-
spring 导坐标:spring-context 、 spring-jdbc、
-
真正管理事务的对象
org.springframework.jdbc.datasource.DataSourceTransactionManager 使用 Spring JDBC 或 iBatis 进行持久化数据时使用
org.springframework.orm.hibernate5.HibernateTransactionManager 使用 Hibernate 版本进行持久化数据时使用 -
Spring依赖注入Bean实例默认是单例的 .
-
Spring 中bean 的作用域和生命周期:
spring
最新推荐文章于 2024-07-18 13:50:38 发布