﻿WEBVTT

1
00:00:03.474 --> 00:00:06.132
<v Instructor>JMS, for Java Message Service,</v>

2
00:00:06.132 --> 00:00:08.967
allows you to send messages to a message queue

3
00:00:08.967 --> 00:00:11.000
in an asynchronous fashion.

4
00:00:11.000 --> 00:00:13.500
That's a core part of JAVA EE.

5
00:00:14.400 --> 00:00:16.718
Here, they basically provide helper classes

6
00:00:16.718 --> 00:00:19.783
to allow you to make use of the Java Message Service,

7
00:00:19.783 --> 00:00:22.857
and again, you can reduce your code by over 50%

8
00:00:22.857 --> 00:00:26.574
by making use of Spring's JMS integration.

9
00:00:26.574 --> 00:00:28.000
And then also, Spring has support

10
00:00:28.000 --> 00:00:31.234
for a transaction manager or supporting transactions,

11
00:00:31.234 --> 00:00:34.499
and you can do this in a very lightweight fashion.

12
00:00:34.499 --> 00:00:36.857
So you can make use of transactions on methods,

13
00:00:36.857 --> 00:00:39.519
on database calls, and pretty much anything you want.

14
00:00:39.519 --> 00:00:40.700
It's very flexible.

15
00:00:40.700 --> 00:00:44.659
And a lot of other projects in the world or on the web,

16
00:00:44.659 --> 00:00:48.242
make use of the Spring transaction manager.

17
00:00:52.058 --> 00:00:55.299
This is basically the home for the Spring MVC framework.

18
00:00:55.299 --> 00:00:57.308
So you can build web applications

19
00:00:57.308 --> 00:01:00.472
using the Spring Core, and also making use

20
00:01:00.472 --> 00:01:03.749
of Spring Controllers and Spring View,

21
00:01:03.749 --> 00:01:06.425
so you have a full MVC layout here,

22
00:01:06.425 --> 00:01:10.017
and we'll cover this a good deal later on in the course.

23
00:01:10.017 --> 00:01:11.999
They also have other modules here

24
00:01:11.999 --> 00:01:13.517
where you can actually interface

25
00:01:13.517 --> 00:01:16.958
with other web technologies, like maybe JSF or Struts,

26
00:01:16.958 --> 00:01:19.633
you can do that, but pretty much,

27
00:01:19.633 --> 00:01:20.691
if you're using Spring already,

28
00:01:20.691 --> 00:01:23.125
then it makes sense to just go ahead and use Spring MVC.

29
00:01:23.125 --> 00:01:25.775
No need to pull in any other APIs,

30
00:01:25.775 --> 00:01:27.975
but you can do that if you want.

31
00:01:27.975 --> 00:01:29.783
They also have support from remoting here,

32
00:01:29.783 --> 00:01:32.849
so you can actually make use of web remoting,

33
00:01:32.849 --> 00:01:34.967
where you can have external clients

34
00:01:34.967 --> 00:01:37.672
make calls into the Spring container.

35
00:01:37.672 --> 00:01:38.932
Think of this like a way

36
00:01:38.932 --> 00:01:41.974
of doing remote procedure calls or RPC,

37
00:01:41.974 --> 00:01:44.074
or also doing distributed computed.

38
00:01:44.074 --> 00:01:47.741
So that's available also in this web module.

39
00:01:49.732 --> 00:01:50.716
Then moving down here,

40
00:01:50.716 --> 00:01:53.424
there's this other item here, Instrumentation.

41
00:01:53.424 --> 00:01:55.957
So basically, Spring has a lot of sophisticated,

42
00:01:55.957 --> 00:01:57.508
fancy technology behind the scenes,

43
00:01:57.508 --> 00:01:59.742
and so here, you can actually make use

44
00:01:59.742 --> 00:02:02.292
of class loader implementations

45
00:02:02.292 --> 00:02:04.743
to work with different apps service.

46
00:02:04.743 --> 00:02:07.217
For example, it can be used to create a Java agent,

47
00:02:07.217 --> 00:02:08.733
so you can remotely monitor

48
00:02:08.733 --> 00:02:12.257
and instrument your application using JMX.

49
00:02:12.257 --> 00:02:13.387
As a developer,

50
00:02:13.387 --> 00:02:15.630
you wouldn't normally build an agent yourself.

51
00:02:15.630 --> 00:02:16.708
You would simply use the agents

52
00:02:16.708 --> 00:02:20.625
provided by the Spring team or your app server vendor.

53
00:02:20.625 --> 00:02:21.567
But the nice thing about it

54
00:02:21.567 --> 00:02:22.717
is to know that behind the scenes,

55
00:02:22.717 --> 00:02:24.749
it's making use of some really cool technologies,

56
00:02:24.749 --> 00:02:28.243
such as AOP coding, bytecode manipulation, and so on.

57
00:02:28.243 --> 00:02:32.410
So that's what you get in the instrumentation model.

58
00:02:34.904 --> 00:02:37.324
Spring has support for test-driven development,

59
00:02:37.324 --> 00:02:39.199
so the framework includes mock objects

60
00:02:39.199 --> 00:02:42.924
for mocking out servlets, JNDI access, and so on.

61
00:02:42.924 --> 00:02:45.916
And you can do all of this outside of the container.

62
00:02:45.916 --> 00:02:47.766
You can also make use of integration test

63
00:02:47.766 --> 00:02:50.830
by creating an application context

64
00:02:50.830 --> 00:02:52.358
and wiring up your desired object.

65
00:02:52.358 --> 00:02:54.774
So testing is a first-class citizen here

66
00:02:54.774 --> 00:02:56.216
when making use of the Spring framework,

67
00:02:56.216 --> 00:03:00.341
so there's a lot of good support for it.

68
00:03:00.341 --> 00:03:01.174
So that's basically it.

69
00:03:01.174 --> 00:03:03.024
So that's a high-level discussion here

70
00:03:03.024 --> 00:03:04.682
of the Spring framework.

71
00:03:04.682 --> 00:03:06.908
In some of the following videos, we're gonna move forward

72
00:03:06.908 --> 00:03:07.924
and we're gonna focus on the work

73
00:03:07.924 --> 00:03:09.941
with the Spring Core container.

74
00:03:09.941 --> 00:03:13.017
We'll also make use of the Spring Web for doing Spring MVC.

75
00:03:13.017 --> 00:03:14.156
And then we'll also make use

76
00:03:14.156 --> 00:03:16.157
of Spring Data Access and Integration.

77
00:03:16.157 --> 00:03:17.191
So those are the key items

78
00:03:17.191 --> 00:03:20.244
that we'll take a look at in this course.

