İçindekiler Önsöz Yazar Hakkında İlk E-Kitap Neden Pratik Spring? Spring Sürümü Kitabın İçeriği Nedir? Kitabın İçeriği Ne Değildir? Kitap Kim İçin Yazıldı? Kitap Nasıl Okunmalı? Yazar İle İletişim PratikProgramci.com 1. Bölüm Spring'e Giriş Spring Filozofisi Dependency Injection Hollywood Prensibi Spring Modülleri Spring Modülleri İle Neler Yapabiliriz? Çekirdek Sunucu (Core Container) Modülü Spring AOP Modülü Veri Erişimi Modülü Spring MVC Modülü Spring Remoting Modülü Spring Test Modülü Spring Uygulama Portföyü Spring 3 İle Gelen Yenilikler Spring 3.0 Spring 3.1 Spring 3.2 Spring'in Uygulama Geliştirmedeki Rolü Spring Yazılım Geliştirme Ortamı Spring Jar Dosyalarını Nasıl Edinebilirim? Spring Hello World 1. Bölüm Soruları 2. Bölüm Spring İle Tanışalım Bir Program Nasıl Oluşur? Araç Kiralama Servisi Program Alan Modeli (Domain Model) Dizge Diyagramı (Sequence Diagram) İlk Çözüm Bağımlılıkların Enjekte Edilmesi (Dependency Injection) Spring İle Bağımlılıkların Enjekte Edilmesi Idref Kullanımı Spring Sunucusu ve BeanFactory Spring Nesne İsimlendirme Bağımlılıkları Enjekte Etme Türleri Listelerin Enjekte Edilmesi Basit Değerlerin Enjekte Edilmesi Null ya da Boş String Değerinin Enjekte Edilmesi 8 8 9 9 10 10 14 14 14 15 15 17 17 19 20 21 22 23 24 24 24 25 25 26 26 27 27 28 29 29 30 31 32 35 37 37 38 38 39 42 42 44 48 54 55 58 59 63 66 66
Nesne Oluşturma Sırasının Tanımlanması Otomatik Veri Tipi Dönüşümü Tekil Nesneler ve Bean Scope Scope Bazlı Nesnelerin Enjeksiyonu Tanımlanabilir (Custom) Bean Scope Metot Enjeksiyonu Metot Değiştirme Yöntemi Fabrika Metodu Fabrika Sınıfları FactoryBean Interface Sınıfı Sirküler Bağımlılıklar Bağımlılıkların Enjekte Edilmesi Yönteminin Avantajları Bağımlılıkları Enjekte Ederken Hangi Yöntem Kullanılmalı? Spring'in Motoru Nasıl Çalıştırılır? XML Konfigürasyon Dosyasının Yüklenmesi Çoklu XML Konfigürasyonu 2. Bölüm Soruları 3. Bölüm Spring İle Nesne Yaşam Döngüsü Yönetimi Spring XML İsim Alanları (XML Namespaces) Bir Spring Uygulamasının Yaşam Döngüsü Kurulum Fazı Nesnelerin Oluşturulması BeanPostProcessor Kullanımı @PostConstruct Anotasyonu Yaşam Döngüsü Metotlarının Kombinasyonu Kullanım Fazı Vekil Nesne Oluşturma İmha Fazı 3. Bölüm Soruları 4. Bölüm Konfigürasyon Yönetimi Bean Tanımlama ve Kalıtım Dahili Bean Tanımlamaları (Inner Beans) Konfigürasyon Dosyalarının İmport Edilmesi P İsim Alanı C İsim Alanı Util İsim Alanı <util:constant/> <util:property-path/> <util:properties/> <util:list/> <util:map/> <util:set/> Spring Expression Language (SpEL) Anotasyon Bazlı Konfigürasyon Standart Java Anotasyonları Diğer Spring Anotasyonları Java Bazlı Konfigürasyon @Import Anotasyonu Kullanımı @PropertySource Anotasyonu Kullanımı Hangi Konfigürasyon Yöntemi Kullanılmalıdır? 4. Bölüm Soruları 67 67 68 69 71 73 75 77 78 79 81 82 82 83 84 86 90 92 92 93 96 97 100 103 104 106 107 108 113 116 118 118 119 124 125 128 129 130 130 131 131 132 133 133 134 140 149 151 151 156 156 157 159
5. Bölüm Spring İle Veri Tabanı İşlemleri JDBC İle Veri Tabanı İşlemleri Spring JdbcTemplate Kullanımı Callback Yöntemleri Hangi Callback Yöntemi Kullanılmalı? NamedParameterJdbcTemplate Kullanımı SimpleJdbcInsert Kullanımı JDBC Batch İşlemleri JDBC ve Spring DAO Support DataSource Konfigürasyonu JDBC Sürücüsü İle DataSource Tanımlaması JNDI DataSource Kullanımı Bağlantı Havuzlu DataSource Tanımlaması 5. Bölüm Soruları 6. Bölüm Spring İle Transaksiyon Yönetimi Transaksiyon Nedir? ACID Özelliği Atomik İşlem Lokal Transaksiyon Yönetimi Spring İle Transaksiyon Yönetimi Deklaratif Transaksiyon Yönetimi Sınıf Bazında Transaksiyon Yönetimi Transaksiyon Özellikleri İzolasyon Seviyeleri (Isolation Levels) Transaksiyon Yayılması (Transaction Propagation) Zaman Aşımı (Timeout) Read-Only Transaksiyonlar Değişiklikleri Geri Alma Kuralları (Rollback-Rules) XML İle Deklaratif Transaksiyon Yönetimi Spring İle Programsal Transaksiyon Yönetimi Dağıtık (Distributed) Transaksiyonlar 6. Bölüm Soruları 7. Bölüm Spring İle Hibernate Kullanımı Boyut Farkı Nesne/Relasyonel Eşleme Hibernate İle Eşleme (Mapping) Anotasyon Yardımı İle Eşleme (Annotation Mapping) SessionFactory Konfigürasyonu Transaksiyon Yönetimi XML Yardımı İle Eşleme (XML Mapping) XML Eşleme İçin SessionFactory Konfigürasyonu HibernateTemplate Kullanımı 7. Bölüm Soruları 8. Bölüm Spring İle JPA Kullanımı JPA Nedir? EntityManagerFactory ve EntityManager Uygulama Tarafından Yönetilen EntityManager Konfigürasyonu Uygulama Sunucusu Tarafından Yönetilen EntityManager Konfigürasyonu 161 161 162 168 172 174 176 178 179 181 183 186 187 188 189 191 193 193 194 195 195 197 200 201 207 209 209 211 212 213 213 214 218 225 232 234 234 235 235 236 236 238 244 246 249 251 253 257 259 259 260 260 262 264
Uygulama Sunucusu Tarafından Yönetilen EntityManager Konfigürasyonu JPA Anotasyonları EntityManager API JNDI Üzerinden EntityManagerFactory Edinme JPA İle DAO Kullanımı JPA İle Transaksiyon Yönetimi 8. Bölüm Soruları 9. Bölüm Spring İle Aspect Oriented Programming AOP Konseptleri AOP Harmanlama (Weaving) Türleri AOP Türleri Spring AOP Advice Türleri Around Advice Pointcut Tanımlamaları Around Advice İçin XML Konfigürasyonu Before Advice After Returning Advice After Throwing Advice After Advice XML İle Named Pointcut tanımlaması Aspekt Parametreleri Advice Sırası Sınıfların Dinamik Olarak Genişletilmesi Spring AOP'nin Sınırları 9. Bölüm Soruları 10. Bölüm Spring MVC Spring MVC ile Kullanıcı İsteğinin İşlenişi Spring MVC Kurulumu Spring MVC ve Uygulama Mimarisi Controller Tanımlaması Model Taşıyıcı ModelMap View Resolver Tanımlaması View Resolver Türleri Araç Kiralama Formu Controller Sınıfları ve Bağımlılıkların Enjekte Edilmesi Spring MVC ile Çoklu Konfigürasyon Kullanımı @RequestParam Anotasyonu Kullanımı @PathVariable Anotasyonu Kullanımı Spring MVC Tarafından Tüketilebilecek Veri Türleri Spring MVC Tarafından Oluşturulabilecek Veri Türleri İç ve Dış Yönlendirme Kod 10.32 - RentalController Genel Hata Sayfası Konfigürasyonu 10. Bölüm Soruları 11. Bölüm Spring Security Güvenlik Terminolojisi Bir Uygulamanın Güvenlik İhtiyaçları Güvenlik Bir Aspekttir 264 265 265 266 266 268 271 273 273 278 279 280 280 281 282 284 291 292 294 296 298 299 300 302 304 309 310 312 312 315 316 320 322 326 327 328 330 342 345 346 347 348 350 351 353 355 357 359 361 361 362 363 364
Neden Spring Security? Spring Security Modülleri Core - spring-security-core.jar Remoting - spring-security-remoting.jar Web - spring-security-web.jar Config - spring-security-config.jar LDAP - spring-security-ldap.jar ACL - spring-security-acl.jar CAS - spring-security-cas.jar OpenID - spring-security-openid.jar Spring Security XML İsim Alanı Spring Security İle Web Sayfası Güvenliği Spring Security Uyumlu Login Sayfası Basic Authentication Logout İşlemi Veri Tabanı Bazlı Authentication Provider Kullanımı Beni Hatırla (Remember-Me Authentication) HTTPS Kullanımı SpEL İle Güvenlik Konfigürasyonu Spring Security JSP Tag Kullanımı Metot Bazında Güvenlik @Pre ve @Post Anotasyonları Pointcut Örneği Alan Nesnesi Bazında Güvenlik SecurityContext ve SecurityContextHolder 11. Bölüm Soruları 12. Bölüm Spring REST Kaynakların REST ile Adreslenmesi HTTP Metotları GET POST PUT DELETE Spring MVC ile REST Uygulaması Kaynak Edinme (GET) Kaynak Oluşturma (POST) Kaynak Silme (DELETE) Kaynak Güncelleme (PUT) Statü Kodları RestTemplate Kullanımı Kaynak Formatını Belirleme Stratejisi REST Uygulamalarında @ExceptionHandler İle Controller Bazlı HandlerExceptionResolver Bazlı @ControllerAdvice Bazlı 12. Bölüm Soruları 13. Bölüm Spring Remoting RMI Service Exporter Kullanımı RMI Client Kullanımı HttpInvoker Kullanımı HttpInvoker Client Kullanımı Hessian ve Burlap Kullanımı SimpleJaxWsServiceExporter İle Web Servis Kullanımı 365 367 367 368 374 377 378 378 381 382 383 384 387 390 392 393 403 405 407 407 409 410 410 411 412 413 413 414 418 419 420 420 421 424 427 427 428 430 431 433 433 435 439 442 444 446 448
JAX-WS Client Kullanımı Hangi Çözümü Kullanmalıyım? 13. Bölüm Soruları 14. Bölüm Spring Web Service Web Servis Uygulama Mimarisi Ortak Dilin Tanımlanması Veri Tipi Sözleşmesi - Message Contract JAXB ile XML/Java Dönüşümü Spring WS Konfigürasyonu Endpoint Tanımlaması WSDL ve Contract First Web Servis Kullanımı SOAP Mesaj Yapısı TCP Monitor Kullanımı POX - Plain Old XML İnterseptör Kullanımı Web Servis Katmanının Test Edilmesi MockServiceClient MockWebServiceServer 14. Bölüm Soruları 15. Bölüm Spring Testing TDD ile Gösterim Katmanı TDD ile Servis Katmanı Veri Katmanı İçin Entegrasyon Testleri EmbeddedDatabaseBuilder Kullanımı Testlerde Kullanılabilecek Anotasyonlar 15. Bölüm Soruları 16. Bölüm Spring JMX MBean Sunucusu MBean Kayıt Denetimi Anotasyon Bazlı Spring JMX 16. Bölüm Soruları 17. Bölüm Spring Task ve Scheduling Spring TaskExecutor SimpleAsyncTaskExecutor SyncTaskExecutor ConcurrentTaskExecutor SimpleThreadPoolTaskExecutor ThreadPoolTaskExecutor TaskExecutor Kullanımı TaskScheduler Kullanımı Trigger Kullanımı Task İsim Alanı task:executor task:scheduler task:scheduled-tasks Anotasyon Bazlı Task Konfigürasyonu @Scheduled @Async 450 452 454 456 456 457 458 460 463 464 466 468 471 474 475 477 478 479 481 482 484 489 491 491 495 506 509 512 513 517 519 519 524 526 527 530 532 532 536 536 539 540 540 540 541 541 542 542 543
Uygulama Sunucu Entegrasyonu 17. Bölüm Soruları 18. Bölüm Spring E-Mail MIME Tipi Mesaj Oluşturma Dosya Gönderme İçerik Formatlama Şablon Kullanımı 18. Bölüm Soruları Cevaplar 1. Bölüm Cevapları 2. Bölüm Cevapları 3. Bölüm Cevapları 4. Bölüm Cevapları 5. Bölüm Cevapları 6. Bölüm Cevapları 7. Bölüm Cevapları 8. Bölüm Cevapları 9. Bölüm Cevapları 10. Bölüm Cevapları 11. Bölüm Cevapları 12. Bölüm Cevapları 13. Bölüm Cevapları 14. Bölüm Cevapları 15. Bölüm Cevapları 16. Bölüm Cevapları 17. Bölüm Cevapları 18. Bölüm Cevapları 544 545 547 547 551 552 552 553 557 559 561 562 564 565 567 568 569 570 570 571 572 573 574 574 575 576 577 578