Presentation is loading. Please wait.

Presentation is loading. Please wait.

(Spring Framework Workshop) By 2552, 22 Supported by KT ZMICO Securities.

Similar presentations

Presentation on theme: "(Spring Framework Workshop) By 2552, 22 Supported by KT ZMICO Securities."— Presentation transcript:

1 (Spring Framework Workshop) By 2552, 22 Supported by KT ZMICO Securities

2 @roofimon TA TA –@somkiat –@9tae –@poorprogrammer –@nuboat –@siros_s –@YashimaExteen –@boyone TA

3 Agenda Impossible is nothing Why Spring? New Features and Enhancements in Spring 3.0New Features and Enhancements in Spring 3.0 –Core Container 3.0 –Persistence with Spring JDBC –AOP (@siros_s) –Transaction with Annotation (@siros_s) –EhCache (Apply AOP) –Spring Web MVC with Web Annotation

4 Basic Requirements JDK 1.6 ++ Maven 2.0.x Apache Derby Netbeans, Eclipse, Vi, Whatever IDE Skeleton Source from – 3/svn/branches/1.0.PRE 3/svn/branches/1.0.PRE Full –https://spring66-training-

5 ( ) Building Spring2 Enterprise Application Development J2EE without EJB Professional Spring Framework Spring2 in Action Pro Spring2 Spring Recipe

6 Java ? Design Pattern: SUN Application Server, API Design Pattern ? Light Weight



9 My Basic Requirements for Lightweight Container Lifecycle management Lookup Configuration Dependency resolution

10 lightweight Container (Value Added) Transaction Thread management Object pooling Clustering Management Remoting Exposing remote services Consuming remote services Customization and extensibility AOP

11 What actually Spring is? Framework that … –make Enterprise Java easier to use –promote good programming practice –enabling a POJO-based programming model that is applicable in a wide range of environments Some said Spring is just a glue for connecting all state of the art technologies together via its Application Context. Heart and Soul of Spring is Dependency Injection and Aspect Oriented Programming.

12 Main Components

13 Layer of Application

14 Dependency Injection Inversion Of Control IOC Hollywood Principle: "Don't call me, I'll call you."

15 Why IoC is Matter? Removes explicit dependence on container APIs Because components don't need to look up collaborators at runtime, they're much simpler to write and maintain Application code is much easier to test A good IoC implementation preserves strong typing Dependencies are explicit No more Application Server dependent

16 Bean? Bean is a service Service = Interface+Implement+Descriptor Bean Bean Factory Application Context Application Context Spring Application Context

17 Configuration applicationContect.xml

18 Initial Context //Load Context Manually From AppConfig.class ApplicationContext context = new FileSystemXmlApplicationContext( "classpath:/applicationContext.xml"); //Lookup Bean named Clinic clinic = (Clinic)context.getBean(clinic); Collection vets = clinic.getVets();

19 The PetClinic

20 The Lightweight Container Architecture

21 Basic Architecture Spring JDBC Spring Core Spring Web MVC JSP jQuery Separate Web Module from Service Module by using HTTP Remoting

22 Basic Requirement Use Cases –View a list of veterinarians and their specialties –View information pertaining to a pet owner –Update the information pertaining to a pet owner –Add a new pet owner to the system –View information pertaining to a pet –Update the information pertaining to a pet –Add a new pet to the system –View information pertaining to a pet's visitation history –Add information pertaining to a visit to the pet's visitation history Business Rules –An owner may not have multiple pets with the same case-insensitive name

23 Checkout Code from Google Code Create Test Case CallisClinicServiceReady – @Autowired – protected Clinic clinic; – @Test – public void isCliniceReady() { – assertNotNull(clinic); –} We have done creating our first bean.

24 Checkout Code from Google Code Create –interface Clinic Run Test (Fail!!!!!) Create –applicationContect.xml –Copy content from Master Project – src\test\resources\org\spring66\ training3\test\petclinic\baseline Run Test !!!!!! We have done creating our first bean.

25 What we have done?

26 Why Test First Test case is META-CODE, code that explains code. Feel confident for refactor, move and share.

27 Checkout Code from Google Code Create interface ListDataService Create class ListDataServiceImpl – @Override – public List getElementsList() { – List list = new ArrayList(); – list.add("Tom"); – list.add("Henri"); – list.add("Jim"); – return list; – }

28 Go more deep into DataSource DB Connection Data Source Hibernate iBatis OpenJPA Persistence Manager Oracle MsSQL DB2 MySQL

29 Go more deep into DataSource Basically we must have this information for datasource –Driver Class –Driver Class Name –Connection String (URL) –Username –Password –Plus some optional parameters depends on Driver Manager (Pool Size, Wait Time, bla bla bla)

30 Go more deep into DataSource Basically we must have this information – – <property name="driverClassName" value="${jdbc.driverClassName}" /> –

31 Spring JDBC The value-add provided by the Spring Framework JDBC abstraction is perhaps best shown by the sequence of actions outlined in the table.

32 Spring JDBC ActionSpringYou Define connection parameters. X Open the connection. X Specify the SQL statement. X Declare parameters and provide parameter values X Prepare and execute the statement. X Set up the loop to iterate through the results (if any). X Do the work for each iteration. X Process any exception. X Handle transactions. X Close the connection, statement and resultset. X

33 Go more deep into Spring JDBC JdbcTemplate NamedParameterJdbcTemplate SimpleJdbcTemplate SimpleJdbcInsert and SimpleJdbcCall RDBMS Objects including MappingSqlQuery, SqlUpdate and StoredProcedure

34 Go more deep into Spring JDBC DataSource Prepared Statement Mapper Extractor

35 Move up to Service Layer The most important part of our Application. All business logics are located, here Test it carefully, change very often. ControllerService Entity A Entity B Entity C

36 Spring Web MVC Flow Clear separation of roles Powerful and straightforward configuration of both framework and application classes as JavaBeans. Adaptability, non-intrusiveness, and flexibility. Customizable binding and validation Customizable handler mapping and view resolution Flexible model transfer Beans whose lifecycle is scoped to the current HTTP request or HTTP Session

37 Spring DispatcherServlet

38 Dispatcher Servlet example org.springframework.web.servlet.DispatcherServlet 1 example *.form

39 Example-servlet.xml <bean class="org.springframework.web.servlet.view.InternalResou rceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" p:order="1"/> <bean id="messageSource" class=" MessageSource" p:basename="messages"/>

40 Context Hierarchy

41 Web Layer Need Spring Boot Strap Web Context Spring Context Web Context Spring Context org.springframework.web.context.ContextLoaderListener web.xml

42 Bootstrapping web applications Spring allows for seamlessly bootstrapping @Configuration classes within your servlet container's web.xml deployment descriptor org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB-INF/applicationContext.xml

43 Still have xxx-servlet.xml Need to create abc-servlet.xml for mapping request from dispatcher servlet <context:component-scan base-package="com.spring66.petclinic.web"/> Also can config other parameters like binding, viewResolver,…

44 Still have xxx-servlet.xml @Controller public class ClinicController { private final Clinic clinic; @Autowired public ClinicController(Clinic clinic) { = clinic; } @RequestMapping("/") public String welcomeHandler() { return "welcome"; }

45 First Controller Named ClinicController And then Copy Content from Main Project src\main\java\com\spring66\petclinic\web ====ClinicController====== mvn jetty:run –Dmaven.test.skip=true –Djetty.port=9999 http://localhost:9999/

46 First Controller, Test First Create VetControllerTests And then Copy Content from Web.text ====TestVetController====== Wowwww!!! Full of red things, so lets eliminate them.

47 Create VetController List All Vet Create VetController Copy content from Web.txt Part VetController There are two interesting parts: Inject clinic service into controller –@Autowired And Request Mapping –@Request over public Collection list() –It will handles {WebContext}/main/vet/list

48 OwnerController, Test First Create OwnerControllerTests And then Copy Content from Web.text ====TestOwnerController====== Wowwww!!! Full of red things, so lets eliminate them.

49 Lets do more action, Test First Create OwnerController –Copy content from Web.txt –Part SearchOwnerController –If it works so move forward Do some magic by adding new Owner –Copy content from Web.txt –Part AddOwnerController Create ViewUtils –Copy content from Web.txt –Part ViewUtils Create PageType.. Good u can guest, next

Download ppt "(Spring Framework Workshop) By 2552, 22 Supported by KT ZMICO Securities."

Similar presentations

Ads by Google