深入了解Spring系列框架

本文深入探讨Spring框架,包括@Configuration和@Bean注解的使用,Bean的作用域,组件扫描,@PostConstruct和@PreDestroy生命周期注解,@Autowired自动装配,依赖注入,Environment及@Value和SpEL的运用,以及Spring Boot的自动配置、测试、事务管理和Spring Security概述。
摘要由CSDN通过智能技术生成

注:在学习完Spring,springMVC,Mybatis,SpringBoot等框架后看下面的知识效果更佳。

@Configuration与@Bean注解

关于@Configuration注解
添加在类的声明之前,表示这个类是一个“配置类”
如果在AnnotationConfigApplicationContext的构造方法参数中直接使用某个类,则这个类可以不添加@Configuration注解
当然,即使添加了也不会出错
虽然可以不添加,但是,只要类是用于配置的,应该添加
关于@Bean注解
在方法的声明之前,表示该方法是用于创建对象的
@Bean方法定义在配置类中
@Bean方法会在加载配置类时,由框架自动调用
@Bean方法的访问权限一般是public
其实,你可以使用任何权限,因为Spring是通过反射来调用的
从设计规范来看,应该使用public
@Bean方法的名称将用于生成Bean id
如果需要其它名称,可通过@Bean注解的属性进行配置
@Bean方法可以没有参数,也可以添加任何由Spring管理的对象作为参数
在这里插入图片描述

在这里插入图片描述

Bean的作用域

在这里插入图片描述
在这里插入图片描述
常用Spring作用域
最常用的作用域有:
在这里插入图片描述
在这里插入图片描述

组件扫描

组件扫描 – 隐式配置
在这里插入图片描述
组件名称
如果没有指定
名称都是自动生成的
以类名作为参考,无视类所在的包
当类名的第1个字母是大写的,第2个字母是小写的,无视其它字母大小写,组件名称是将首字母改为小之的名称
例如 TransferServiceImpl 的组件名称会是 transferServiceImpl
否则,组件名称就是类名
建议:永远不要依靠自动生成的名称!
如果指定
可通过@Component注解的属性进行配置
在这里插入图片描述

关于组件扫描
可以扫描多个包:
除了指定的包,其各层级的子包都会被扫描
@ComponentScan注解的参数可以是字符串数组,表示多个包名
各组件会在启动时被扫描:
除了你自己写的类,JAR依赖也会被扫描!
如果需要扫描的文件太多,可能导致启动变慢
特别是对于大型应用程序
在最坏的情况下会慢几秒

组件扫描最佳实践
在这里插入图片描述

生命周期注解:@PostConstruct与@PreDestroy

@PostConstruct和@PreDestroy
在这里插入图片描述

关于@PostConstruct和@PreDestroy
创建Bean的常见方式:
由@Bean方法返回
根据组件扫描发现并创建
然后Spring会自动调用这些方法
在创建Bean的过程中

以下这些不是Spring的注解
由JSR-250定义,从Java 6开始的部分
在 javax.annotation 包中的
由Spring和Java EE支持的

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Stereotypes与Meta注解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

@Autowired自动装配

@Autowired的用法
在这里插入图片描述
http://olivergierke.de/2013/11/why-field-injection-is-evil/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Spring的依赖注入

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Environment及@Value注解和SpEL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
BD
在这里插入图片描述

Envrionment与@Value注解与SpEL

设置属性的值
考虑上一章节的这个bean的定义:

@Bean 
public DataSource dataSource() {
   
        BasicDataSource dataSource = new BasicDataSource();                                   
        dataSource.setDriverClassName("org.postgresql.Driver"); 
        dataSource.setUrl("jdbc:postgresql://localhost/transfer"); 
        dataSource.setUsername("transfer-app"); 
        dataSource.setPassword("secret45");
        return dataSource; 
}

对这些参数字符串进行硬编码是不好的做法:
更好的做法是将这些“外部化”到一个Properties文件中去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Application对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值