SPRING
SPRING
--------
-----------------------------------------------------------------------------------
----------------------------
* IT PROVIDES THE PREDEFINED TEMPLATES FOR JDBC, HIBERNATE, JPA, etc., USING
WHICH WE CAN
AVOID THE BASIC STEPS OF EXECUTION.
1) BY USING JDBC TEMPLATE WE CAN AVOID THE STEP LIKE LOAD AND REGISTER
THE DRIVER,
ESTABLISH THE CONNECTION BETWEEN JAVA APP AND DATABASE SERVER, CREATE A
STATEMENT OR
PLATFORM , CLOSE THE COSTLY RESOURCES WHIC WHERE SUPPOSED TO BE WRITTEN
BEFORE AND AFTER
THE EXECUTION OF QUERY.
2) BY USING THE HIBERNATE TEMPLATE WE CAN AVOID THE STEPS LIKE CREATING
THE CONFIGURATION
OBJECT,CREATING SESSIONFACTORY, CREATING SESSION, HANDLING TRANSACTION WHICH IS
SUPPOSED TO BE EXECUTED
BEFORE AND AFTER SAVING A RECORD.
* THIS SPRING APP ARE EASY TO TEST AS IT SUPPORTS DEPENDENCY INJECTION AND
INVERSION OF CONTROL.
SPRING BEAN :
-------------
-----------------------------------------------------------------------------------
--------------------------------
SPRING CONTAINER :
------------------
* SPRING CONTAINER WILL CREATE SPRING BEAN OBJECT ,INITIALISE SPRING BEAN
OBJECT , MANAGE THE
LIFE CYCLE SPRING BEAN , INJECT THE DEPENDENCY FOR SPRING BEAN.
NOTE :
------
* WE CAN PROVIDE THE INFORMATION FOR THE SPRING CONTAINER ABOUT THE OBJECT
THAT HAS TO BE CREATED,
INITIALISED,MANAGED AND THE DEPENDENCY TO THE INJECTED BY PROVIDING METADATA.
* WE CAN PROVIDE THE METADATA FOR THE SPRING CONTAINER IN THE FOLLOWING WAYS
1) BY USING XML
2) BY USING ANOTATION
3) BY JAVA CODE
POJO CLASSES
|
METADATA------------> | <--------SPRING
CONTAINER
| | | OBJ 1,OBJ 2,OBJ 3
XML ANNOTATION JAVACODE |
|
RUN APPLICATION
-----------------------------------------------------------------------------------
---------------------------------
BEAN SCOPE :
------------
* IT IS USED TO SPECIFY THE NO.OF SPRING BEAN OBJECTS THAT HAS TO CREATED FOR
A POJO CLASS OR BEAN CLASS
IN A SPRING CONTAINER.
3)REQUEST ===> A NEW OBJ WILL BE CREATED FOR EVERY HTTP REQUEST
4)SESSION ===> A NEW OBJ WILL BE CREATED FOR EVERY HTTP SESSION
-----------------------------------------------------------------------------------
--------------------------------
2) MVC CONTAINER
IOC CONTAINER :
---------------
1) BEAN FACTORY :
--------------
2) APPLICATIONCONTEXT :
--------------------
* IT WILL HAVE ALL THE FUNCTIONALITIES OF BEANFACTORY AND ALSO SOME ADVANCED
FUNCTIONALITIES
-----------------------------------------------------------------------------------
--------------------------------
-----------------------------------------------------------------------------------
---------------------------
BEANFACTORY APPLICATIONCONTEXT
-----------------------------------------------------------------------------------
---------------------------
* IT PROVIDES THE BASIC FUNCTIONALITIES * IT WILL HAVE ALL THE
FUNCTIONALITIES OF BEANSFACTORY
AND ALSO SOME ADVANCED FUNCTIONALITIES
-----------------------------------------------------------------------------------
--------------------------------
org.springframework.core.io.resource :
--------------------------------------
* THIS INTERFACE REPRESENTS THE RESOURCE THAT HAS TO BE PROVIDED FOR THE
SPRING CONTAINER TO
MANAGE THE SPRING BEANS.
-----------------------------------------------------------------------------------
--------------------------------
XmlBeanFactory :
----------------
* IT REPRESENTS THE SPRING CONTAINER WHICH SHOULD READ THE BEAN DEFINITION
FROM AN XML DOCUMENT.
-----------------------------------------------------------------------------------
--------------------------------
getBean() :
-----------
----------------------------------------------------------------
METHOD SIGNATURE RETURN TYPE
----------------------------------------------------------------
* getBean(String) Object
* getBean(String,Class<T>) T
* getBean(Class<T>) T
-----------------------------------------------------------------------------------
--------------------------------
-----------------------------------------------------------------------------------
--------------------------------
Car.xml :
---------
<beans>
<bean id="mycar" class="org.jsp.springdemo.car"></bean>
</beans>
-----------------------------------------------------------------------------------
--------------------------------
TestCar.java :
--------------
public Class Teacher {
psvm() {
Resource r = new ClassPathResource("car.xml");
BeanFactory factory = new XmlBeanFactory(r);
Car c = factory.getBean("myCar",Car.class);
c.start();
}}}
-----------------------------------------------------------------------------------
--------------------------------
-----------------------------------------------------------------------------------
--------------------------------
-----------------------------------------------------------------------------------
--------------------------------
PERSON.JAVA :
-------------
package org.jsp.sprigdemo;
-----------------------------------------------------------------------------------
--------------------------------
XML CODE :
----------
<beans>
<bean id="myperson" class="org.jsp.springdemo.Person">
<property name="age"value="25"></property>
<property name="name"value="Sathish"></property>
</bean>
</beans>
-----------------------------------------------------------------------------------
-------------------------------
TEST.JAVA :
-----------
-----------------------------------------------------------------------------------
-------------------------------
* THE SPRING BEAN CAN BE INITIALISED BY XML USING COSTRUCTOR WITH THE HELP
OF <constructor-arg/> WHICH IS
A SUB TAG OF <BEAN/>.
-----------------------------------------------------------------------------------
-------------------------------
USER.JAVA:
----------
package.org.jsp.springdemo;
public class User{
private long phone;
peivate String password;
public User() {
System.out.println("No-ARg constructor from user class");
}
}
}
-----------------------------------------------------------------------------------
-------------------------------
XML.CODE :
----------
<beans>
<bean id="myUser" class="org.jsp.springdemo.User">
<constructor-arg name="phone"value="2985465"/>
<constructor-arg name="password"value="abc123"/>
</bean>
</beans>
-----------------------------------------------------------------------------------
-------------------------------
TEST.JAVA :
-----------
-----------------------------------------------------------------------------------
-------------------------------
APPLICATIONCONTEXT :
-------------------
-----------------------------------------------------------------------------------
-------------------------------
-----------------------------------------------------------------------------------
-------------------------------
-----------------------------------------------------------------------------------
-------------------------------
ENGINE.JAVA :
-------------
-----------------------------------------------------------------------------------
-------------------------------
BIKE.JAVA:
----------
-----------------------------------------------------------------------------------
-------------------------------
BIKE.XML :
----------
<beans>
<bean id="myBike" class="org.jsp.springdemo.Bike">
<property name="e"ref="myEngine"></property>
</bean>
<bean id="myEngine"class="org.jsp.springdemo.Engine"></bean>
</beans>
-----------------------------------------------------------------------------------
-------------------------------
TEST BIKE.JAVA :
----------------
-----------------------------------------------------------------------------------
-------------------------------
-----------------------------------------------------------------------------------
-------------------------------
PANCARD.JAVA:
--------------------
pacakage org.jsp.springdemo;
-----------------------------------------------------------------------------------
-------------------------------
PANCARDHOLDER.JAVA:
--------------------
pacakage org.jsp.springdemo;
-----------------------------------------------------------------------------------
-------------------------------
PANCARD.XML :
-------------
<beans>
<bean id="myPerson" class="org.jsp.springdemo.PanCardHolder">
<constructor-arg name="card"ref="myCard"></constructor-arg>
</bean>
<bean id="myCard" class="org.jsp.springdemo.PanCard">
<property name="name" value="sdkvjgsiu"></property>
<property name="number" value="sd654545siu"></property>
</bean>
</beans>
-----------------------------------------------------------------------------------
-------------------------------
TEST.JAVA :
-----------
-----------------------------------------------------------------------------------
-------------------------------
COLLECTION INJECTION :
----------------------
-----------------------------------------------------------------------------------
-------------------------------
EXAMPLE PROGRAM TO UNDERSTAND COLLECTION INJECTION :
----------------------------------------------------
DEPARTMENT.JAVA :
-----------------
package org.jsp.SpringDemo;
import java.util.List;
import java.util.Map;
import java.util.Set;
-----------------------------------------------------------------------------------
-------------------------------
DEPARTMENT.XML :
----------------
<beans>
<bean id="dept" class="org.jsp.springdemo.Department">
<property name="names">
<List>
<value>Virat</value>
<value>MSD</value>
<value>Rohit</value>
</List>
</property>
<property name="ids">
<Set>
<value>75</value>
<value>100</value>
<value>50</value>
</Set>
</property>
<property name="details">
<Map>
<entry Key='75' value='Virat'></entry>
<entry Key='100' value='MSD'></entry>
<entry Key='50' value='Rohit'></entry>
</Map>
</property>
</bean>
</beans>
-----------------------------------------------------------------------------------
-------------------------------
TEST3.JAVA:
-----------
package org.jsp.SpringDemo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-----------------------------------------------------------------------------------
-------------------------------
RIDE.XML :
----------
<beans>
<bean id="RIDE" class="org.jsp.springdemo.di.Ride">
<property name="v" ref="myBike"></property>
</bean>
<bean id="myBike" class="org.jsp.springdemo.di.Bike"> </bean>
<bean id="myCar" class="org.jsp.springdemo.di.Car"> </bean>
</beans>
-----------------------------------------------------------------------------------
-------------------------------
TEST.JAVA :
-----------
package org.jsp.SpringDemo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-----------------------------------------------------------------------------------
-------------------------------
AUTOWIRING :
------------
2) byName :
IN THIS MODE OF AUTOWIRING SPRING CONTAINER WILL SEARCH FOR A
QUALIFIED BEAN WHOSE
NAME IS SAME AS REFERENCE NAME.
3) CONSTRUCTOR :
IN THIS MODE OF AUTOWIRING SPRING CONTAINER WILL CALL A
CONSTRUCTOR WITH MOST NUMBER OF
PARAMETER TO INJECT THE DEPENDENCY.
4) NO :
IT WILL DISABLE AUTOWIRING .
-----------------------------------------------------------------------------------
-------------------------------
NOTE :
------ 0
* WHENEVER WE HAVE MORE THEN ONE QUALIFIED BEAN FOR A REFERENCE TYPE IN
AUTOWIRING WE CAN SPECIFY
THE QUALIFYING BEAN OR PRIMARY BEAN BY USIN AN ATTRIBUTE
PRIMARY="true" WHICH IS PRESENT IN<BEAN/>
-----------------------------------------------------------------------------------
-------------------------------
ICECREAM.JAVA :
---------------
package org.jsp.SpringAutowiring;
-----------------------------------------------------------------------------------
-------------------------------
VANILLA.JAVA :
--------------
package org.jsp.SpringAutowiring;
-----------------------------------------------------------------------------------
-------------------------------
CHOCOLATE.JAVA :
----------------
package org.jsp.SpringAutowiring;
-----------------------------------------------------------------------------------
-------------------------------
BABY.JAVA :
-----------
package org.jsp.SpringAutowiring;
-----------------------------------------------------------------------------------
-------------------------------
BABY.XML :
----------
TEST.JAVA :
package org.jsp.SpringAutowiring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-----------------------------------------------------------------------------------
-------------------------------