文档章节

SpringBoot

小兽
 小兽
发布于 2017/05/11 13:58
字数 1516
阅读 10
收藏 1

不知道jar包的dependency怎么写的话

http://mvnrepository.com/

STS下载地址

https://spring.io/tools/sts/all

 

 

 

Spring IOC 容器(ApplicationContext) 负责创建bean ,并通过容器将功能类Bean注入到你需要的Bean中。

Spring 提供了4种方式实现Bean的创建和注入

XML配置

注解

Java配置

groovy配置

 

声明Bean的注解

@Component

组件

@Service

业务逻辑层

@Repository

数据访问层

@Controller

展现层

 

注入Bean的注解,可注解在Set方法上或属性上,建议注解在属性上,优点是代码更少,层次更清晰。

@Autowired

Spring提供的注解

@Inject

JSR-330提供的注解

@Resource

JSR-250提供的注解

 

 

@Configuration

声明当前类是一个配置类

@ComponentScan

使用它将自动扫描包名下所有使用@Component/@Service/@Repository/@Controller的类,并注册为Bean 

 

AnnotationConfigApplicationContext作为Spring 容器,接受输入一个配置类作为参数,获得声明配置的Bean。

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DiConfig.class);

UseFunctionService  useFunctionService = context.getBean(UserFunctionService.class;

 

 

Java配置

Java配置是Spring 4.X推荐的配置方式,可以完全替代XML配置;Java配置也是Spring Boot推荐的配置方式。

Java配置是通过@Configuration 和@Bean 来实现的。

 

如何使用Java配置或注解配置呢?

原则: 全局配置使用Java 配置(如数据库相关配置/MVC相关配置),业务Bean的配置使用注解配置(@Component/@Service/@Repository/@Controller)

 

AOP

AspectJ

@EnableAspectJAutoProxy 开启Spring对AspectJ的支持

使用@AspectJ声明一个切面

使用@After/@Before/@Around定义增强,可以直接将拦截规则(切点)作为参数

其中@After/@Before/@Around 参数的拦截规则为切点 (PointCut), 为了使切点复用,可使用@PointCut专门定义拦截规则,然后再@After/@Before/@Around的参数中使用

其中符合条件的每一个被拦截处为连接点(JoinPoint)

 

 

Spring EL-Spring 表达式语言,支持在xml和注解中使用表达式,类似于JSP的EL表达式语言。

 

@PropertySource("classpath:com/citi/highlight_sprint4/ch2/el/test.properties") 指定文件地址

 

Bean的初始化和销毁

 

Java配置方式: 使用@Bean的initMethod 和 destroyMethod,相当于xml配置的init-method 和 destory-method

注解方式: 利用JSR-250的@PostConstruct 和 @PreDestroy

 

 

Profile 为不同环境下使用不同的配置提供了支持

 

Spring 的事件(Application Event) 为Bean 与 Bean 之间的消息通信提供了支持。

1.自定义事件,继承ApplicationEvent.

2.自定义事件监听器,实现ApplicationListener

3.使用容器发布事件

 

Spring Aware 是Spring 设计用来框架内部使用的,若用了Spring Aware, 你的Bean就会合Spring 容器耦合。

SpringAware 的目的是为了让Bean获得Spring容器的服务。因为ApplicationContext接口集成了MessageSource接口/ApplicationEventPublisher接口/ResourceLoader接口,

所以Bean继承ApplicationContextAware可以获得Spring 容器的所有服务,但原则上还是用到什么接口就实现什么接口。

 

多线程,配置类实现AsyncConfigurer 接口并重写了getAsyncExecutor方法,返回ThreadPoolTaskExecutor, 这样我们就获得了一个基于线程池的TaskExecutor.

@EnableAsync

开启对异步任务的支持

@Async

声明其是一个异步任务

 

计划任务

@EnableScheduling

开启对计划任务的支持

@Scheduled

声明这是一个计划任务

 

条件注解

通过活动的profile,我们可以获得不同的Bean,Spring4提供了一个更通用的基于条件的Bean的创建,即使用@Conditional注解。

@Conditional ,根据满足某一个特定的条件创建一个特定的Bean. 比方说,当某一个Jar包在一个类路径下的时候,自动配置一个或多个Bean;或者只由某个Bean被创建才会创建另外一个Bean。总的来说,就是根据特定条件来控制Bean的创建行为,这样我们可以利用这个特性进行一些自动配置。

 

组合注解与原注解

 

@Enable* 注解的工作原理

1.直接导入配置类 @import(SchedulingConfiguration.class)

2.依据条件选择配置类

3.动态注册Bean. 在运行时自动添加Bean到已有的配置类。

 

测试

Spring通过Spring TestContext Framework对集成测试提供顶级支持。他不依赖于特定的测试框架,即可以使用JUnit也可以使用TestNG

1.Spring JUnitClassRunner在JUnit环境下提供SpringTetContext Framework 的功能。

2.@ContextConfiguration 用来加载配置ApplicationContext,其中classes属性用来加载配置类

3.@ActiveProfiles用来声名活动的Profile

4.可使用普通的@Autowired注入Bean

5.测试代码,通过Junitd 的Assert来校验是否和预期一致。

 

 

Spring MVC

@EnableWebMvc

开启Web MVC的配置支持

 

Sprign MVC 项目快速搭建,Sprint MVC 提供了一个DispatcherServlet来开发Web应用

Servlet 2.5及以下版本

在web.xml下配置<Servlet>元素即可

Servlet 3.0+无web.xml的配置

在Spring MVC 里实现WebApplicationInitializer 接口便可实现等同于web.xml的配置

 

在Spring MVC声明控制器Bean的时候,只能使用@Controller.

 

Spring MVC的定制配置需要我们的配置类继承一个WebMvcConfigurerAdapter类,并在此类使用@EnableWebMvc注解,来开启对SpringMvc的配置支持,

这样我们可以重写这个类的方法,完成我们的常用配置。

 

静态资源映射,重写addResourceHandlers(ResourceHandlerRegistry registry) 方法

Registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");

addResourceLocations -- > 文件放置的目录

addResourceHandler --> 对外暴露的访问路径

 

拦截器

让普通的Bean实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类来实现自定义拦截器

通过重写WebMvcConfigurerAdapter的addInterceptors方法来注册自定义的拦截器

 

@ControllerAdvice

声明一个增强,它组合了@Component注解,所以自身会自动注解为springd的Bean

@ExceptionHandler(vvalue = Exception.class)

通过它的Value属性可过滤拦截的条件。在此我们拦截所有的Exception

@ModelAttribute

将键值对添加到全局,然后所有注解了@RequestMapping的方法可以获得此键值对

@InitBinder

通过它定制WebDataBinder

 

快捷的ViewController

对于只是简单的页面跳转的请求,我们可以在配置中重写addViewControllers来简化配置。

 

路径匹配参数配置

重写configurePathMatch

© 著作权归作者所有

小兽
粉丝 2
博文 28
码字总数 29947
作品 0
上海
项目经理
私信 提问
恒宇少年/spring-boot-chapter

简书整套文档以及源码解析 专题 专题名称 专题描述 001 Spring Boot 核心技术 讲解SpringBoot一些企业级层面的核心组件 002 Spring Cloud 核心技术 对Spring Cloud核心技术全面讲解 003 Quer...

恒宇少年
2018/04/19
0
0
SpringBootBucket 2.0.4 发布,代号“傲娇的小二晶”

SpringBootBucket 自从1.0.0版本发布后就有好多人喜欢,目前码云上面star数量接近1.2k。上个月还收到了红薯签名的1000 star奖杯,这个我自己也觉得很惊讶。 由于SpringBoot 1.x官方将终止维护...

一刀
2018/09/16
1K
4
springboot情操陶冶-初识springboot

前言:springboot由于其轻便和去配置化等的特性已经被广泛应用,基于时代潮流以及不被鄙视,笔者于是开辟此篇开始认识springboot 前话 springboot是基于spring而开发的轻量级框架,所以在学习...

南柯问天
2018/07/24
0
0
SpringBootBucket 1.0.0 发布,SprintBoot 全家桶

Spring Boot 现在已经成为Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。 本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通过“一...

一刀
2018/03/05
7.3K
17
springboot 详解 (六)servlet & scheduled & listener

---------------------------------------------------------------------------------------------------------------- springboot 详解 (一) helloworld 下载demo springboot 详解 (二)......

curiousby
2016/11/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java的战争

本文来自微信公众号: 金捷幡(ID:jin-jiefan) ,作者:金捷幡,封面:拉里·埃里森(东方IC) 2019年5月,彻底撕破脸的特朗普掀起对华为的战争,谷歌被迫吊销了华为的Android授权。开源软...

Java领航员
今天
6
0
超详细的LM3414MRX/NOPB规格参数介绍就在这里

超详细的LM3414MRX/NOPB规格参数介绍就在这里 描述 LM3414和LM3414MRX/NOPB是具有1-A 60 W(1)共阳极功能的恒流降压LED驱动器。它们适用于驱动单串3-W HBLED,效率高达96%。它们可接受4.5...

不能吃肉的仙女
今天
2
0
Eclipse国内镜像源配置方法

Table of Contents 我们在国内从官网下载Eclipse以及插件非常慢,那么,有没有方法变快呢? 有,那就是使用国内的公开镜像源替换官方源。 1 下载Eclipse 首先,我们看一个链接地址: http:/...

求神
今天
7
0
java 请求服务

一.第一种基于java web http 请求服务,必须用tomcat 容器启动才能对外提供服务 在maven 工程中pox 文件导入jar <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>h......

zaolonglei
今天
6
0
HDFS工作机制——自开发分布式数据采集系统

需求描述: 在业务系统的服务器上,业务程序会不断生成业务日志(比如网站的页面访问日志) 业务日志是用log4j生成的,会不断地切出日志文件,需要定期(比如每小时)从业务服务器上的日志目...

须臾之余
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部