ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କ

**ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କ**(Spring Framework) ହେଉଛି ଜାଭା (ପ୍ରୋଗ୍ରାମିଂ ଭାଷା) ପାଇଁ ଗୋଟିଏ ଆପ୍ଲିକେସନ୍ ଫ୍ରେମୱାର୍କ ଓ ଇନଭର୍ସନ ଅଫ୍ କଣ୍ଟ୍ରୋଲ କଣ୍ଟେନର (inversion of control container)। ଏହି ଫ୍ରେମୱାର୍କର ଏକ ମୁଖ୍ୟ ଉଦ୍ଦେଶ୍ୟ ହେଉଛି ଏହାକୁ ଆମେ ଯେକୌଣସି ଜାଭା ଆପ୍ଲିକେସନ୍ ପାଇଁ ବ୍ୟବହାର  କରିପାରିବା, କିନ୍ତୁ ଏଥିରେ ଜାଭା ଇଇ(Java EE)କୁ ବ୍ୟବହାର କରି ୱେବ ଆପ୍ଲିକେସନ୍ସ(web applications) ଗୁଡିକୁ ଗଢିବା ପାଇଁ କିଛି ପଦ୍ଧତି ସଂପ୍ରସାରଣ କରାଯାଇଛି । ଯଦିଓ ଏହି ଜାଭା ଫ୍ରେମୱାର୍କର କିଛି ସେମିତି ବିନିର୍ଦ୍ଦିଷ୍ଟ ଗୁଣ ନାହିଁ ତଥାପି ଏହା ଜାଭା ସମାଜଦ୍ୱାରା ଅଧିକା ଲୋକପ୍ରିୟ ହୋଇଛି ଏବଂ ଏହା ଇଜେବି(Enterprise JavaBeans) ମଡେଲର ପୁନଃସ୍ଥାପନ ବୋଲି କୁହାଯାଉଛି । ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କ ଇଣ୍ଟରନେଟ୍‌ରେ ସଂପୂର୍ଣ୍ଣ ମୁକ୍ତ ଭାବେ ଉପଲବ୍ଢ ।
## ଅଧ୍ୟାୟ ଇତିହାସ(Version history)
ସ୍ପ୍ରିଙ୍ଗର ପ୍ରଥମ ଅଧ୍ୟାୟଟି ରଡ୍ ଜନ୍‌ସନ୍‌ଙ୍କଦ୍ୱାରା ଲେଖାଯାଇଥିଲା, ଯିଏକି ଅକ୍ଟୋବର ୨୦୦୨ ମସିହାରେ ତାଙ୍କ ପୁସ୍ତକ "ଏକ୍ସପର୍ଟ ୱାନ୍-ଅନ୍-ୱାନ୍ ଜେଟୁଇଇ ଡିଜାଇନ୍ ଆଣ୍ଡ୍ ଡେଭେଲପ୍‌ମେଣ୍ଟ"(Expert One-on-One J2EE Design and Development)କୁ ପ୍ରକାଶ କରାଇ ଏହାକୁ ମୁକ୍ତିଲାଭ କରାଇଥିଲେ । ୨୦୦୩ ମସିହାରେ ଏହା ପ୍ରଥମେ ଆପାଚି ୨.୦ ଅନୁଜ୍ଞପ୍ତି ( Apache 2.0 license ) ଅଧୀନରେ ମୁକ୍ତିଲାଭ କରିଥିଲା । ପ୍ରଥମ ଅଧ୍ୟାୟରେ ପ୍ରଥମ ଭାଗଟି ମାର୍ଚ୍ଚ ୨୦୦୪ ମସିହାରେ ମୁକ୍ତିଲାଭ କାରିଥିଲା ଓ ଏହାର ପରବର୍ତ୍ତୀ ଭାଗଗୁଡ଼ିକ ସେପ୍ଟେମ୍ବର ୨୦୦୪ ଓ ମାର୍ଚ୍ଚ ୨୦୦୫ରେ ମୁକ୍ତିଲାଭ କରିଥିଲା । ୨୦୦୬ ମସିହାରେ ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କର ୧.୨.୬ ଭାଗଟି ଜଲ୍ଟ ପ୍ରଡକ୍ଟିଭିଟି ଆୱାର୍ଡ ଓ ଗୋଟିଏ ଜାକ୍ସ(JAX(Java API for XML)) ଇନୋଭେସନ୍ ଆୱାର୍ଡ ପ୍ରାପ୍ତ କରିଥିଲା । ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କର ୨.୦ ଭାଗ  ଅକ୍ଟୋବର ମାସ ୨୦୦୬ ମସିହାରେ, ସ୍ପ୍ରିଙ୍ଗ ୨.୫ ନଭେମ୍ବର ୨୦୦୭ ମସିହାରେ, ସ୍ପ୍ରିଙ୍ଗ ୩.୦ ଡିସେମ୍ବର ୨୦୦୯ ମସିହାରେ, ୩.୧ ଡିସେମ୍ବର ୨୦୧୧, ୩.୨.୫ ନଭେମ୍ବର ୨୦୧୩ ମସିହାରେ ମୁକ୍ତିଲାଭ କରିଥିଲା । ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କ ୪.୦ ଡିସେମ୍ବର ୨୦୧୩ ମସିହାରେ ମୁକ୍ତିଲାଭ କରିଥିଲା । ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କର ୪.୦ ଭାଗରେ ଜାଭା ଏସ୍ ଇ ୮(SE (Standard Edition) 8) ପାଇଁ,ଗ୍ରୋଭି ୨,ଜାଭା ଇଇର କିଛି ଦୃଷ୍ଟିକୋଣରେ,ୱେବ ସକେଟରେ (WebSocket)ରେ କିଛି ଉନ୍ନତ କରାଯାଇଥିଲା ।

ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କ ୪.୨.୦ ୩୧ ଜୁଲାଇ ୨୦୧୫ ମସିହାରେ ମୁକ୍ତିଲାଭ କରିଥିଲା ଏବଂ ତା'ପରେ ୪.୨.୧କୁ ଉନ୍ନତ କରାଯାଇ ୧ ସେପ୍ଟେମ୍ବର ୨୦୧୫ ମସିହାରେ ମୁକ୍ତିଲାଭ କରିଥିଲା। ଏହା ଜାଭା ୬,୭,୮ ସହ ଖାପଖାଇ ପାରୁଥିଲା। ଏହି ଅଧ୍ୟାୟରେ core java ଓ modern web capabilities ଉପରେ ବିଶେଷ କରି ଧ୍ୟାନ ଦିଆଯାଇଥିଲା ।

ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କ ୪.୩.୦ ୧୦ ଜୁନ୍ ୨୦୧୬ ମସିହାରେ ମୁକ୍ତିଲାଭ କରିଥିଲା ଯେଉଁଟାକି ୨୦୨୦ ମସିହା ପର୍ଯ୍ୟନ୍ତ ପ୍ରଚଳିତ ହେଇପାରିବ ।

ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କ ୫.୦ ୧୮ ଜୁଲାଇ ୨୦୧୭ ମସିହାରେ ମୁକ୍ତି ଲାଭ କରିଥିଲା।ଏହି ଅଧ୍ୟାୟରେ ସ୍ପ୍ରିଙ୍ଗରେ ଉନ୍ନତ କରାଯାଇଥିବା ବିଶେଷ ଗୁଣମାନ ହେଲା:-
*ଜେଡିକେ(JDK) ବେସ୍ ଲାଇନ୍ ଅପଡେଟ୍
*କୋର ଫ୍ରେମୱାର୍କର ପୁନରାବୃତ୍ତି
*କୋର କଣ୍ଟେନର ଅପଡେଟ୍
*କୋଟ୍‌ଲିନ୍ ସହିତ ଫନ୍କସ୍ନାଲ ପ୍ରୋଗ୍ରାମିଂ
*ରିଆକ୍ଟିଭ ପ୍ରୋଗ୍ରାମିଂ ମଡେଲ
*ଟେଷ୍ଟିଙ୍ଗ ଉନ୍ନତ୍ତିକରଣ
*ଲାଇବ୍ରେରୀକୁ ସମର୍ଥନ
*ଡିସକଣ୍ଟିନ୍ୟୁଡ ସପୋର୍ଟ

## ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କ ବିଭାଗମାନ
ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କ କେତୋଟି ଭାଗରେ ବିଭକ୍ତ କରାଯାଇଛି:-
*ସ୍ପ୍ରିଙ୍ଗ କୋର:ଏହା ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କର ମୂଳ ଭାଗ ଯିଏକି spring containers (BeanFactory and ApplicationContext) ଯୋଗାଇଥାଏ।
*ଆସ୍ପେକ୍ଟ ଓରିଏଣ୍ଟେଡ ପ୍ରୋଗ୍ରାମିଂ: cross-cutting concernକୁ ଉନ୍ନତ କରିବା ପାଇଁ ସମର୍ଥ କରାଏ।
*ଅଥେଣ୍ଟିକେସନ ଓ ଅଥୋରାଇଜେସନ: Spring Securityଦ୍ୱାରା security processes, protocols, toolsକୁ ସଜାଇଥାଏ।
*କନଭେନସ୍‌ନ ଓଭର କନଫିଗୁରେସନ୍ :ସ୍ପ୍ରିଙ୍ଗ ରୋ ବିଭାଗରେ ଉପଲବ୍ଧ ସ୍ପ୍ରିଙ୍ଗ ବାଣିଜ୍ୟ ଭିତ୍ତିକ application ଗୁଡିକର ଦ୍ରୁତ ମାତ୍ରାରେ ଉନ୍ନତିକରଣ କରିବାରେ ସହାୟକ ହୋଇଥାଏ। 
*ଡାଟା ଆକ୍ସେସ:ଜାଭା platformରେ  Java Database Connectivity (JDBC) ଓ object-relational mapping tools ଓ with NoSQL database ବ୍ୟବହାର କରି 
relational database management systems ସହ କାମ କରିଥାଏ। 
*ଇନଭର୍‌ସନ୍ ଅଫ୍ କଣ୍ଟ୍ରୋଲ କଣ୍ଟେନର: dependency injectionଦ୍ୱାରା application componentsର ସଜ୍ଜୀକରଣ ଓ ଜାଭା objectsର ସଂପାଦନା
*ମେସେଜିଙ୍ଗ: Java Message Service (JMS)ଦ୍ୱାରା message queuesରୁ ସ୍ୱଛ ବାର୍ତ୍ତା ପ୍ରେରଣ ପାଇଁ message listener objectର registration
*ମଡେଲ–ଭ୍ୟୁ–କଣ୍ଟ୍ରୋଲର:ଏହା ଏକ HTTP- and servlet-based framework ଯାହା web applicationsର extension and customization ପାଇଁ ହୁକ୍ ଦେଇଥାଏ।  
*ରିମୋଟ ଆକ୍ସେସ ଫ୍ରେମୱାର୍କ: ନେଟୱାର୍କରେ ଜାଭାର configurative remote procedure call (RPC)-style marshalling ରିମୋଟ ମେଥଡ ଇନ୍ୱୋକେସନ (RMI),CORBA (Common Object Request Broker Architecture) ଓ HTTP-based ପ୍ରଟୋକଲ୍ସ ସହିତ ୱେବ ସର୍ଭିସେସ (SOAP (Simple Object Access Protocol))କୁ ସମର୍ଥନ କରିଥାଏ।
*ଟ୍ରାନସାକ୍ସନ ମ୍ୟାନେଜମେଣ୍ଟ:ଅନେକ Transaction management  API ଗୁଡିକୁ ଏକତ୍ର କରେଇ ଓ ଜାଭା  object ଗୁଡିକୁ Transaction ପାଇଁ ସମଗୁରୁତ୍ୱ ଦିଏ। 
*ରିମୋଟ ମ୍ୟାନେଜମେଣ୍ଟ: Java Management Extensions (JMX)ଦ୍ୱାରା ସଜ୍ଜୀକରଣ ହୋଇଥିବା ଜାଭା objectଗୁଡ଼ିକ local or remote configuration ପାଇଁ ସଂପାଦନା ତୁଲାଇଥାଏ।
*ଟେଷ୍ଟେଙ୍ଗ: unit tests ଓ integration tests ଲେଖିବା ପାଇଁ class ଗୁଡିକୁ ସମର୍ଥନ ଦେଇଥାଏ।
## ଇନଭର୍‌ସନ୍ ଅଫ୍ କଣ୍ଟ୍ରୋଲ କଣ୍ଟେନର(Dependency Injection)
**ଇନଭର୍‌ସନ୍ ଅଫ୍ କଣ୍ଟ୍ରୋଲ(IOC) କଣ୍ଟେନର** ସ୍ପ୍ରିଙ୍ଗ ଫ୍ରେମୱାର୍କର କେନ୍ଦ୍ରବିନ୍ଦୁ ଯିଏ ଜାଭା ଅବଜେକ୍ଟ ଗୁଡିକୁ ରିଫଲେକ୍ସନ୍ ବ୍ୟବହାର କରି configure କରିଥାଏ ଓ ଅବଜେକ୍ଟର ଜୀବନ ଚକ୍ର ସଂପାଦନା କରିଥାଏ।ଅବଜେକ୍ଟ ତିଆରି କରିବା,ଅବଜେକ୍ଟକୁ ତିଆରି କରୁଥିବା ମେଥଡକୁ କଲ୍ କରିବା ଓ ଏହି ଅବଜେକ୍ଟ ଗୁଡିକୁ wiring କରି configure କରିବା ଇତ୍ୟାଦି ଇନଭର୍‌ସନ୍ ଅଫ୍ କଣ୍ଟ୍ରୋଲ କଣ୍ଟେନରର ଦାୟିତ୍ୱ ହୋଇଥାଏ।

ଇନଭର୍‌ସନ୍ ଅଫ୍ କଣ୍ଟ୍ରୋଲ କଣ୍ଟେନରଦ୍ୱାରା ତିଆରି ହୋଇଥିବା ବା ସୃଷ୍ଟ ଅବଜେକ୍ଟକୁ ମ୍ୟାନେଜ୍ଡ ଅବଜେକ୍ଟ ବା ବିନ୍ସ ମଧ୍ୟ କୁହାଯାଏ। XML(Extensible Markup Language) fileକୁ ଲୋଡ କରି କିମ୍ବା ଜାଭା କ୍ଲାସରେ ଆନୋଟେସନ୍ ବ୍ୟବହାର କରି କଣ୍ଟେନରକୁ configure କରାଯାଇପାରେ। ଏହି ଡାଟା ଉତ୍ସଗୁଡିକ ବିନ୍ର definitions ବହନ କରିଥାନ୍ତି ଯାହାକି ବିନ୍ ତିଆରି କରିବାକୁ ଦରକାର ହୋଇଥାଏ।

## ଆଧାର 
ଶ୍ରେଣୀ:କମ୍ପ୍ୟୁଟର ବିଜ୍ଞାନ