Spring 专业认证考试学习指南
今天逛Spring 官网发现Spring 官方早在今年五月份就推出了一套Spring 专业认证考试。
接下来让我们一起来官网了解下吧。
1.1 Spring 专业认证考试简介
打开Spring 官网,我们可以看到如下简介:
上面翻译后大致意思是: Spring 专业认证考试旨在测试和验证 您对Spring的理解和熟悉
打开介绍看了下,学习资料是免费的,但是考试测评是收费的。
详情如下所示:
1.2 Spring 专业认证考试学习资料
考试资料如下:
1.3 Spring 专业认证考试范围
Spring 专业认证考试旨在测试和验证您对以下方面的理解和熟悉:
- Container basics
- Aspect Oriented Programming (AOP)
- Data access and transactions
- Spring model-view-controller (MVC)
考试主题范围如下:
- Container (20%)
- AOP (8%)
- JDBC (4%)
- Transactions (8%)
- MVC (8%)
- Security (6%)
- REST (6%)
- JPA Spring Data (4%)
- Testing (4%)
- Boot Into (8%)
- Boot Autoconfig (8%)
- Boot Actuator (8%)
- Boot Testing (8%)
考试时间是90分钟,通过率76%以上视为合格。
1.4 Spring 专业认证考试费用
看了下考试费用是169美元
折算成人民币是多少钱呢?
然后除此之外,推荐了四天的核心备战考试课程,价格也是不菲哈。
他们可能真的不知道中国国内行情,定价真贵。。。
1.5 Spring 专业认证考试知识点汇总
考试费用我是考不起了,不过这些题目大纲感觉还是很有学习价值的。
接下来我们就一起盘点下这些Spring 核心技术栈需要掌握的东西吧。
1.5.1 Container, Dependency ,AOP和 IOC
1.5.1.1 Container
- 什么是DI(
dependency injection
) 以及有什么优点?- 什么是一个接口?他们在Java中使用有什么优点?
- 为什么推荐使用
Spring Beans
?- application-context 应用程序上下文是什么意思?
- 如何创建一个新的
ApplicationContext
实例?- 能否在
ApplicationContext
中描述Spring Bean
的生命周期- 如何在集成测试中创建ApplicationContext?
- 关闭 application context (应用程序上下文)的首选方法是什么? Spring Boot是否是这样做的?
1.5.1.2 Dependency
- 如何使用Java Configuration 实现依赖注入?
- 如何使用
@Autowired
注解实现依赖注入?- 能否描述下 Component scanning 组件扫描?
- 能否描述下
Spring Beans
的范围?默认的范围是什么?- Beans 默认是懒加载还是优先加载? 如何改变这种行为?
- 什么是
property
?如何使用@PropertySource
?BeanFactoryPostProcessor
是什么?它是用来做什么的? 什么时候开始调用?- 为什么要定义静态@Bean方法?
ProperySourcesPlaceholderConfigurer
是用来干什么的?- BeanPostProcessor 是什么?它和BeanFactoryPostProcessor 有什么不同?它们可以做什么?什么时候调用?
- 什么是初始化方法?在Spring Bean 中如何声明它?
- 什么是销毁方法,如何声明它和什么时候它会被调用?
- 考虑如何启用JSR-250 注解,比如
@PostConstruct
和@PreDestroy ,它们什么时候/如何被调用?- 您还可以如何为
Spring bean
定义初始化或销毁方法?- component-scanning组件扫描是干啥的?
- @Autowired 注解作用到字段注入,构造注入和方法注入,有什么不同?
- 如果想对私有的成员字段注入一些东西,该怎么做?这对测试有什么影响?
@Qualifier
注解如何补充@Autowired
的使用?- 什么是代理对象,Spring可以创建两种不同类型的代理?
- 这些代理(每种类型)的局限性是什么?
- 代理对象的功能是什么,缺点在哪里?
@Bean
注解是干什么的?- 如果仅使用
@Bean
,默认的bean ID
是什么? 您如何覆盖它?- 为什么不允许使用@Configuration 注解作用在一个final 类上?
- 如何让 拥有
@Configuration
注解的类支持单例bean
?- 为什么
@Bean
注解方法也不能是final
的?- 如何配置profiles文件? 有哪些可能有用的用例?
@Bean
和@Profile
可以一起使用吗?@Component
和@Profile
可以一起使用么?- 可以有多少个
Profiles
文件?- 如何将
scalar/literal
(标量/文字)值注入Spring Bean
- @Value 注解是用来做什么的?
- 什么是
Spring Expression Language
(简称SpEL
)- Spring 的抽象的 Environment是什么?
Environment
中的properties 从何而来–有许多来源属性
如果不确定,请检查文档。 Spring Boot增加了更多。
-我们可以使用SpEL引用什么?@Value
表达式中的$
和#
有什么区别?
1.5.1.3 AOP
面向切面编程
- AOP的概念是什么? 它解决什么问题? 跨域需要注意什么?
- 列举三个典型的切面的注意事项。
- 如果您不通过AOP解决跨领域问题,会出现哪两个问题?
- 什么是pointcut(切入点),join point(连接点),advice(建议),aspect(方面),weaving(编织)?
- Spring如何解决(实现)跨域问题?
- 两种代理类型有哪些局限性?
- 使用Spring AOP必须代理Spring bean方法什么可见性?
- Spring支持多少种建议类型。 可以给每个命名吗?
- 他们的用途是什么?
- 如果您想尝试捕获异常,可以使用哪两个建议?
- 您需要做什么才能启用
@Aspect
注解的检测?@EnableAspectJAutoProxy
注解是做什么的?- 如果显示了切入点表达式,您能理解它们吗?
- 例如,在课程中,我们在Spring Beans上匹配了getter方法,那么正确的切入点表达式 是匹配getter和setter方法?
JoinPoint
参数用于什么?- 什么是
ProceedingJoinPoint
? 什么时候使用?
1.5.2 Data Management: JDBC, Transactions
- 已检查和未检查的异常之间有什么区别?
- 为什么Spring更喜欢未检查的异常?
- 什么是数据访问异常层次结构?
- 如何在Spring中配置数据源? 哪个bean对开发/测试数据库非常有用?
- 什么是模板设计模式,什么是
JDBC
模板?- 什么是回调? 可以使用的三个JdbcTemplate回调接口是什么有疑问吗? 每个都有什么用? (您不必记住界面 名称,但如果您在代码示例中看到它们,则应该知道它们的作用。)
- 您可以使用JDBC模板执行普通的SQL语句吗?
- 对于每种方法,JDBC模板何时获取(并释放)连接 每个模板调用一次还是一次? 为什么?
JdbcTemplate
如何支持通用查询? 它如何返回对象以及列表/对象图?- 什么是事务? 本地事务和全局事务有什么区别?
- 事务是否是跨域的关注点? Spring如何实现?
- 您将如何在Spring中定义事务?
@Transactional
是做什么的? 什么是PlatformTransactionManager
?- JDBC模板是否可以参与已存在的事务?
- 什么是事务隔离级别? 我们有多少,如何定制?
@EnableTransactionManagement
注解是做什么的?- 事务传递是什么意思?
- 如果一个@Transactional带注解的方法在同一对象实例上调用另一个@Transactional带注解的方法会发生什么?
- 在哪里可以使用
@Transactional
注解? 如果您将其放在class 类级别上,通常有什么用法?- 声明式事务管理是什么意思?
- 默认回滚策略是什么? 如何重写它?
- 当您使用JUnit测试时,默认的回滚策略是什么? 当我们使用JUnit 4中的
@RunWith(SpringJUnit4ClassRunner.class)
或 JUnit 5中的@ExtendWith(SpringExtension.class)
的注解,您的@Test
注解@Transactional
的方法?- 为什么“工作单元”一词如此重要,为什么JDBC AutoCommit违反了这种模式?
- 如果您想使用JPA,在Spring需要做什么?
- 使用JPA时,当Spring 和JPA 一起使用的时候,可以参与已有的事务么?
- 您可以在JPA中使用哪些
PlatformTransactionManager
?- 您需要配置什么才能在
Spring
中使用JPA
?Spring Boot
如何使这更容易?
1.5.3 Spring Data JPA
- 什么是 Repository 接口?
- 如何定义Repository 接口? 为什么它是一个接口而不是类?
- Repository接口中的finder方法的命名约定是什么?
- Spring在运行时如何实现
Spring Data
repositories (存储库)?- @Query 注解是用来做什么的? Spring MVC和Web层
- MVC是一个设计模式的缩写。 它代表什么,它背后的思想是什么?
- 什么是
DispatcherServlet
,它的作用是什么?- 什么是web application context(Web应用程序上下文)? 它提供什么额外的范围?
@Controller
注解有什么用?- 传入请求如何映射到控制器然后映射到方法?
@RequestMapping
和@GetMapping
注解不同之处是什么?@RequestParam
是做什么的?- @RequestParam 和@PathVariable 的不同之处是什么?
- 控制器方法的参数类型有哪些?
- 您还可以在控制器方法参数上使用哪些其他注解? (您可以忽略此考试的表单处理注释)
- 控制器方法的有效返回类型有哪些?
1.5.4 Security
- 什么是身份验证和授权? 哪一个必须优先?
- security 是跨领域关注的问题吗? 在内部如何实现?
- 什么是委派过滤器代理?
- 什么是安全过滤器链?
- 什么是 security context ?
antMatcher
或mvcMatcher
中的**模式有什么作用- 为什么在
antMatcher
上推荐使用mvcMatcher
?- Spring Security是否支持密码哈希? 什么是salt 盐?
- 为什么需要方法安全性? 该方法通常保护哪种类型的对象级别(考虑其用途而不是其Java类型)。
@PreAuthorized
和@RolesAllowed
注解是做什么? 它们之间有什么区别?- 这些注解如何实现?
- 您可以在哪个security 注解中使用SpEL?
1.5.5 REST
- REST代表什么?
- resource 是什么?
- CRUD 是什么意思?
- REST安全吗? 您可以采取什么措施来保护它?
- REST是否可扩展和/或可互操作?
- REST使用哪些HTTP方法?
- 什么是
HttpMessageConverter
?- REST通常是无状态的吗?
@RequestMapping
有什么作用?@Controller
是构造型吗?@RestController
是构造型吗?- 什么是构造型注解?这意味着什么?
@Controller
和@RestController
有什么区别?- 您何时需要
@ResponseBody
?GET
,POST
,PUT
或DELETE
的HTTP
状态返回码是什么?- 什么时候需要
@ResponseStatus
?- 在哪里需要
@ResponseBody
?@RequestBody
呢?尽量不需要混淆了。- 如果您看到了示例控制器代码,您是否了解它在做什么?你能否告诉是否正确注解?
- 您的类路径中是否需要
Spring MVC
?- 对于
Spring REST
应用程序,您将使用哪种Spring Boot Starter?RestTemplate
的优点是什么?- 如果您看到一个使用
RestTemplate
的示例,您会理解它的作用吗?
1.5.6 Testing
- 您是否在单元测试中使用Spring?
- 什么类型的测试通常使用Spring?
- 如何在
JUnit
集成测试中创建共享的应用程序上下文?- 在测试时 什么时候,什么地方使用
@Transactional
?- 如何使用Mockito或EasyMock等模拟框架?
@ContextConfiguration
如何使用?Spring Boot
如何简化编写测试?@SpringBootTest
做什么? 它如何与@SpringBootApplication
和@SpringBootConfiguration
交互?
1.5.7 Spring Boot 介绍
- Spring Boot 是什么?
- 使用Spring Boot有什么优势?
- 为什么它是 opinionated (自以为是)的?
- 哪些因素会影响Spring Boot的设置?
- 什么是 Spring Boot starter POM ?为什么它是有用的?
- Spring Boot同时支持properties和YML文件。 如果你看到,你能识别和理解他们么?
- 您可以使用Spring Boot控制日志记录吗? 怎么控制?
- 默认情况下,Spring Boot在哪里寻找properties文件?
- 如何定义特定于配置文件的properties文件?
- 如何访问properties文件中定义的属性?
- 您必须定义哪些属性才能配置外部MySQL?
- 您如何配置默认schema 表结构 和初始数据?
- 什么是 fat jar? 它和原始的jar 有什么不同?
- 嵌入式容器和WAR有什么区别?
- Spring Boot支持哪些嵌入式容器?
1.5.8 Spring Boot Auto Configuration
- Spring Boot如何知道要配置什么?
@EnableAutoConfiguration
做什么?@SpringBootApplication
做什么?- Spring Boot是否进行组件扫描? 默认情况下它在哪里?
- 如何自动配置
DataSource
和JdbcTemplate
?spring.factories
文件有什么用?- 如何自定义Spring自动配置?
@Conditional
注解的示例是什么? 如何使用?
1.5.9 Spring Boot Actuator
- Spring Boot Actuator提供什么值?
- 您可以使用哪两种protocols 协议访问actuator endpoints?
- 开箱即用的actuator endpoints有哪些?
- 信息endpoints的作用是什么? 您如何提供数据?
- 如何使用loggers endpoint更改包的日志记录级别?
- 如何使用标签访问端点?
- metrics 指标是什么?
- 如何创建带有或不带有标签的自定义指标?
- 什么是健康指标?
- 开箱即用的健康指标是什么?
- 健康指标状态是什么?
- 开箱即用的健康指示器的状态是什么?
- 您如何更改健康指标状态严重性顺序?
- 为什么要利用第三方外部监控系统?
1.5.10 Spring Boot Testing
- 什么时候要使用
@SpringBootTest
注解?@SpringBootTest
自动配置什么?- spring-boot-starter-test 会给
classpath
添加什么依赖?- 如何使用
@SpringBootTest
对Web应用程序执行集成测试?- 您何时要使用
@WebMvcTest
? 它会自动配置什么?@MockBean
和@Mock
有什么区别?- 您何时需要
@DataJpaTest
? 它会自动配置什么?
本篇完~
- 如果喜欢我的博文,欢迎点击关注和点赞。
- 交流即分享,分享才能进步。