Spring学习笔记:spring中相关细节

Spring中相关细节


1、spring的核心部分:beans、core、context、expression。(还需要一个依赖包:commons-logging)

2、spring简单测试步骤:
①加载配置文件xml:ApplicationContext context = new ClassPathXmlApplicationContext(“bean1.xml”);
②获取配置创建的对象:User user = context.getBean(“user”,User.class);
③调用相关方法:user.XXXXX();

3、控制反转IOC:把对象创建和对象之间的调用过程,交给Spring进行管理。使用IOC的目的:为了降低耦合度。IOC的底层原理:xml解析、工厂模式、反射。

4、解析bean.xml文件不仅可以使用ApplicationContext 还可以使用,BeanFactory 对象, 它是spring里内部使用的接口,一般不提供给我们开发人员使用。ApplicationContext只是BeanFactory 接口的一个子接口,提供了更多更强大的功能。

5、ApplicationContext在加载配置文件的时候就会创建对象了。而BeanFactory接口在加载配置文件的时候是不会创建对象的,只有在获取对象的时候才去创建对象。

6、ApplicationContext 接口里面有两个主要的实现类:①FileSystemXmlApplicationContext 和②ClassPathXmlApplicationContext。①需要些盘符路径,②需要写类路径。

7、IOC中Bean管理:①创建对象 。②注入属性。 (每种都有两种实现方法:基于xml、基于注解)

8、基于xml注入属性:(各种属性解释)
①id属性:唯一标识。②class属性:类全路径。③name属性:同id属性,但是name属性可以加特殊符号。

9、创建Bean对象的时候,也是默认执行其中的无参数的构造方法完成对象构造。

10、DI:依赖注入(就是注入属性)。跟IOC不是同一个意思。
①使用set方法进行注入。②使用有参构造进行注入。③在spring的bean标签内使用<property>标签进行注入。(若是有参构造则用<construct-arg>标签)

11、p名称空间注入的底层还是用的set方法注入。

12、①向注入属性中设置空值:<property name=“address”><null></null></property>
②向注入属性中设置特殊符号:(用CDATA方法)

13、①外部bean:
alt

②内部bean:
alt

③级联bean:
alt

14、bean创建的是class对象,而不是interface。

15、xml注入集合属性:
①注入数组:
alt

②注入List:
alt

③注入Map:
alt

④注入Set:
alt

16、使用util标签完成 list 集合注入提取。

17、Bean的作用域:(scope)
在spring里面,设置创建bean实例是单实例还是多实例。(默认情况下,创建的bean 都是单实例对象。)在bean中用scope 来调整:默认值singleton,表示单实例对象。prototype,表示多实例对象。设置scope=prototype 的话,不是在加载spring配置文件的时候就创建对象了,而是在调用getBean 方法的时候去创建一个多实例对象。

18、Bean的生命周期:
①什么是生命周期?从对象的创建到对象销毁的过程。
②Bean的生命周期:(1)通过构造器创建Bean实例。(无参构造)(2)为bean的属性设置值和对其他bean的引用(调用set方法)。(3)调用bean的初始化的方法(需要进行配置,init-method)。(4)bean就可以使用了(对象获取到了)。(5)当容器在关闭的时候,调用bean的销毁的方法(需要自己进行配置销毁的方法,destroy-method)。
③实际上在init-method 前后还有两个生命周期是:bean的前置处理器 和 bean的后置处理器。

19、xml的自动装配
①不需要写<property>标签,实现自动装配。根据属性类型和属性名称进行自动装配。
②实现方法:在bean标签内有个 autowire 属性。autowire属性常用的两个值byName和byType
③一般在实际操作场景中,用注解实现自动装配比较多。

20、引入外部属性文件
①创建外部文件:
alt
②把外部properties文件引入到spring配置文件中:(需要引入context名称空间)
alt
21、基于注解方式实现对象创建和注入属性:
①注解:注解可以作用在类、方法和属性上面。从而简化xml配置文件。
②spring针对Bean管理中创建对象提供注解:(区分并不严格,其功能都是一样的)
(1)@Component 普通的注解创建对象
(2)@Service 一般用在业务逻辑层
(3)@Controller 一般用在web层上
(4)@Repository 一般用在持久层上
③注解操作依赖aop包。
④开启注解扫描:在xml文件中
alt
然后再创建类,在类上加上注解就可以了。@Component(value=“XXXXXX”) 属性值默认类名称首字母小写。
⑤spring针对注入属性提供注解:(在具体属性上添加注解)
(1)@Autowire 根据属性类型自动注入
(2)@Qualifier 根据属性名称自动注入(需要和@Autowire注解一起使用)
(3)@Resource 可以根据类型也可以根据名称注入
(4)@Value 根据普通类型注入(直接指明要注入变量的值)

22、完全注解开发
①创建配置类,代替xml 配置文件:(创建SpringConfig类)
alt
②编写测试类:
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

以上为spring中的IOC部分,以下为spring中的AOP部分

23、AOP 面向切面,不修改源代码进行功能增强。可以对业务的各个部分进行隔离,从而使耦合度降低。

24、AOP底层原理:动态代理。(分两种情况)①有接口的情况,使用JDK的动态代理。②没有接口的情况,使用CGLIB动态代理。

25、AOP的四个术语:
(1)连接点:类里面的哪些方法可以被增强,这些方法称为连接点。
(2)切入点:实际被增强的方法,就称为切入点。
(3)通知(增强):实际增强的逻辑部分称为通知(增强)。通知有多种类型前置通知、后置通知、环绕通知、异常通知、最终通知。
(4)切面:把通知应用到切入点的过程(是一个动态过程)

26、Spring框架中一般都是基于 AspectJ 实现AOP 操作:AspectJ 不是spring 的组成部分,独立AOP 框架,一般把AspectJ 和Spring 框架一起使用,进行AOP 操作。

27、实现方式:(引入aspects、cglib、aopaliance、weaver 依赖)
①基于注解方式:
alt

alt
alt

②基于xml方式:略

以上为AOP部分,以下为JDBC部分。

28、Spring 框架对 JDBC 进行了封装,使用JdbcTemplate 方便实现对数据库操作。
①配置数据库连接池 ②配置JdbcTemplate 对象,并注入DataSource信息 alt
④注入JdbcTemplate 在dao中:alt

29、通过JdbcTemplate 的 jdbcTemplate.update(String sql,Object…args) 就能够实现对数据库的增删改
①第一个参数:sql语句 ②第二个参数:可变参数,设置sql 语句值。
alt
30、JdbcTemplate 查询操作:
①查询返回某个值: queryForObject(String sql,Class<T> requiredType) 方法 ,两个参数。
②查询返回对象:queryForObject(String sql,RowMapper<T> rowMapper,Object… args) 方法,三个参数。
③查询返回集合:query(String sql,RowMapper<T> rowMapper,Object… args) 方法,三个参数。

以上为JdbcTemplate内容,以下为spring中事务的内容。

31、事务:是数据库操作的最基本的单元,是逻辑上的一组操作。要么都成功,如果有一个失败,则所有操作都失败。

32、事务的四大特性:原子性、一致性、隔离性、持久性。 ACID 分别代表四个特性。

33、编程式事务操作流程:①开启事务 ②进行业务操作 ③没有发生异常,提交事务 ④出现异常,事务回滚

34、声明式事务操作流程:(基于注解,底层使用的是AOP 的原理)
①创建事务管理器 ②开启事务注解
alt③在service类上面(或者service类里面方法上面)添加事务注解 :@Transactional 。如果添加到了类上面,表示这个类里面的所有方法都添加事务。如果添加到了方法上面,表示只有这个方法才添加事务。

35、@Transactional() 注解里面的一些属性:
①propagation() 属性:传播行为。②isolation() 属性:隔离级别。③timeout() 属性:超时时间。④readOnly() 属性:是否只读。⑤rollbackFor() 属性:回滚

以上为spring的事务管理,以下为spring5的新特性。

36、spring5新特性:
①整个框架基于java8,运行时兼容JDK9,许多不建议使用的类和方法在代码库中删除。
②spring5框架自带了通用的日志封装。
③spring5框架中核心容器部分支持@Nullable 注解:这个注解可以使用在方法上面、参数上面和属性上面,表示方法返回值可以为空。(避免空指针异常)
④spirng5框架中支持整合JUnit5测试。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值