autodetect autowiring in spring
For the System requirements, project required jars and project creation setup steps please refer the below links:-
http://www.javatechtipssharedbygaurav.com/2013/06/spring-beans-autowiring.html
Example of "autodetect" autowiring mode:-
ShoeCompanyDetails.java
package
com.spring.gaurav.autowire.autodetect.example;
public class
ShoeCompanyDetails {
            private
String shoeCompanyName;
            private
String companyType;
            private
String companyHeadquarters;
            private
int companyFoundationyear;
            public
String getShoeCompanyName() {
                        return
shoeCompanyName;
            }
            public
void setShoeCompanyName(String shoeCompanyName) {
                        this.shoeCompanyName
= shoeCompanyName;
            }
            public
String getCompanyType() {
                        return
companyType;
            }
            public
void setCompanyType(String companyType) {
                        this.companyType
= companyType;
            }
            public
String getCompanyHeadquarters() {
                        return
companyHeadquarters;
            }
            public
void setCompanyHeadquarters(String companyHeadquarters) {
                        this.companyHeadquarters
= companyHeadquarters;
            }
            public
int getCompanyFoundationyear() {
                        return
companyFoundationyear;
            }
            public
void setCompanyFoundationyear(int companyFoundationyear) {
                        this.companyFoundationyear
= companyFoundationyear;
            }
}
Shoemaker.java
package
com.spring.gaurav.autowire.autodetect.example;
import
com.spring.gaurav.autowire.autodetect.example.ShoeCompanyDetails;
public class
Shoemaker {
            private
String companyFounder;
            private
ShoeCompanyDetails shoeCompanyDetails;
            public
void displayShoemakerCompanyHistory() {
                        System.out.println("SHOE
COMPANY NAME :- "
                                                +
shoeCompanyDetails.getShoeCompanyName()
                                                +
", \nCOMPANYFOUNDER NAME :- " + companyFounder + ",");
                        System.out.println("COMPANY
TYPE :- "
                                                +
shoeCompanyDetails.getCompanyType()
                                                +
", \nCOMPANY HEADQUARTERS :- "
                                                +
shoeCompanyDetails.getCompanyHeadquarters()
                                                +
" \nAND COMPANY FOUNDATION YEAR :- "
                                                +
shoeCompanyDetails.getCompanyFoundationyear());
            }
            public
Shoemaker(ShoeCompanyDetails shoeCompanyDetails) {
                        this.shoeCompanyDetails
= shoeCompanyDetails;
            }
            public
String getCompanyFounder() {
                        return
companyFounder;
            }
            /*public
ShoeCompanyDetails getShoeCompanyDetails() {
                        return
shoeCompanyDetails;
            }
            public
void setShoeCompanyDetails(ShoeCompanyDetails shoeCompanyDetails) {
                        this.shoeCompanyDetails
= shoeCompanyDetails;
            }*/
            public
void setCompanyFounder(String companyFounder) {
                        this.companyFounder
= companyFounder;
            }
}
autowire-mode-autodetect-beans.xml
<beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 
<bean id="shoemakerBean" class="com.spring.gaurav.autowire.autodetect.example.Shoemaker"
autowire="autodetect">
        <property name="companyFounder"
value="AERO GROUP" />
 
</bean>
 
<bean id="shoeCompanyDetails" class="com.spring.gaurav.autowire.autodetect.example.ShoeCompanyDetails">
        <property name="shoeCompanyName"
value="WOODLAND WORLDWIDE" />
        <property name="companyType"
value="SUBSIDIARY" />
        <property name="companyHeadquarters"
value="QUEBEC, CANADA " />
        <property name="companyFoundationyear"
value="1992"></property>
 
</bean>
</beans>
AutodetectAutowireClient.java
package
com.spring.gaurav.autowire.autodetect.example;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
public
class AutodetectAutowireClient {
            public static void main(String args[])
{
                        ApplicationContext
appContext = new ClassPathXmlApplicationContext(
                                                "autowire-mode-autodetect-beans.xml");
                        Shoemaker
shoemaker = (Shoemaker) appContext.getBean("shoemakerBean");
                        shoemaker.displayShoemakerCompanyHistory();
            }
}
/**
 *
Notes: According to "autowire-mode-autodetect-beans.xml" bean file,
we called
 *
shoemakerBean in this client program, In the xml bean configuration file, we
 *
have declared autowire = autodetect, so according to the autodetect autowire
 *
mode first container will try to autowire by constructor of Shoemaker class
 *
having ShoeCompanyDetails class as an argument, as we have declared private
 *
ShoeCompanyDetails shoeCompanyDetails in Shoemaker.java file, and using the
 *
ShoeCompanyDetails class as an argument of Shoemaker class constructor then
 *
it injects ShoeCompanyDetails bean class properties which is shoeCompanyName,
 *
companyType, companyHeadquarters and companyFoundationyear and injects value
 *
of companyFounder property of Shoemaker class. Try to comment the Shoemaker
 *
constructor and then uncomment the setter and getter method of
 *
ShoeCompanyDetails property in Shoemaker class then execute the client. You
 *
will find no difference. As we know in case of autodetect Spring container
 *
first attempts to autowire by constructor and then using byType in case if
 *
first attempt does not work or falied(autowire by constructor).
 * 
 */
Result:- 
log4j:WARN No appenders
could be found for logger
(org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please
initialize the log4j system properly.
SHOE COMPANY NAME :- WOODLAND WORLDWIDE, 
COMPANYFOUNDER NAME :- AERO GROUP,
COMPANY TYPE :- SUBSIDIARY, 
COMPANY HEADQUARTERS :- QUEBEC, CANADA  
AND COMPANY FOUNDATION YEAR :- 1992
 
No comments:
Post a Comment