2011년 11월 20일 일요일

SpringFramework MVC Example

스프링 프레임웍 은 유연하게 결합한 웹 응용프로그램을 구축하는데 도움을 준다.
MVC (모델뷰컨트롤러) 디자인패턴은 비지니스로직, 프리센테이션 로직 과 탐색로직을 분리
구현하는데 도움이 된다.

2011년 11월 19일 토요일

SpringFramework Java Config Import Example

UserConfig.java


package com.domain;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.domain.User;
@Configuration
public class UserConfig {

     @Bean (name="user")
     public User user (){
           return new User();
     }
}

ProductConfig.java

package com.domain;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.domain.Product;
@Configuration
public class ProductConfig {

     @Bean (name="product")
     public Product  product (){
           return new Product();

     }

}

AppConfig.java
package com.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import ({UserConfig.class,ProductConfig.class})
public class AppConfig {
   
}







MainApp.java

package com.domain;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.config.AppConfig;

public class MainApp {

    public static void main(String[] args) {
             // ApplicationContext context =
             //           new ClassPathXmlApplicationContext ("beans.xml");
              ApplicationContext context =
                           new AnnotationConfigApplicationContext (AppConfig.class);
   
              User user = (User) context.getBean ("user");
              user.printMsg ("User Message");

              Product product = (Product) context.getBean ("product");
              product.printMsg ("Product Message");

        
    }
}

User.java and Product.java

public class User {
     public void printUser(String message){
          System.out.println ("User Message : " + message);
     }
}

또는 XML 로 처리 할수 있다

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">


   
    <import resource="User.xml"/>
    <import resource="Product.xml"/>

</beans>

2011년 11월 18일 금요일

SpringFramework JavaConfiguration Example

HelloWorld.java

pakage com.domain.xxx;

public interface HelloWorld {
   void  printHelloWorld (String message);
}

HelloWorldImpl.java

public class HelloWorldImpl implements HelloWorld {
    @Override
    public void printHelloWorld (String message){
        System.out.println ("Sring 3 : java Configuration Example  Message : " + message);
    }
}

AppConfig.java

@Configuration
public class AppConfig {
    @Bean (name="helloWorld")
     public HelloWorld helloWorld () {
        return new HelloWorld();
     }
}

Main.java
public class Main {
    public  static void main(String[] args) {
       /* ---------------------------------------------------------------
       *   ApplicationContext context =
       *                    new ClassPathXmlApplicationContext ("SpringBeans.xml");
       * -------------------------------------------------------------- */
        ApplicationContext context =
                new AnnotationConfigApplicationContext    (AppConfig.class);

        HelloWorld hello = (HelloWorld) context.getBean ("helloWorld");
        hello.printHelloWorld("Message");

    }
}

필요Lib : CGLib (Spring Dependencies / net.sourceforget.cglib package )


2011년 11월 12일 토요일

SpringFramework Injection di property

User.java   method
package com.domain;

public class User {
   
// name , age , country 에 beans.xml 에서 bean property 를 이용하여 값을 설정 할수있다
    private String name;
    private int    age;
    private String country;
   
   
   
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
   

    public String toString (){
        return "Name : " + name + " : " + age + " : " + country;
    }
   
}




beans.xml

  <bean id="user" class="com.domain.User">
       <property name="name"    value="홍길동"></property>
       <property name="age"     value="20"></property>
       <property name="country" value="조선"></property>
   </bean>

SpringFramework Construct Injection

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">

    <bean id="user" class="com.domain.User" >
       <!-- Contruct  Injection  -->
       <constructor-arg index="0" value="홍길동"></constructor-arg>
       <constructor-arg index="1" value="10"></constructor-arg>
       <constructor-arg index="2" value="한국"></constructor-arg>
    </bean>
</beans>

applicationContext-2.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">

   <bean id="user2" class="com.domain.User" >
      <!-- Contruct  Injection  -->
      <constructor-arg value="name"></constructor-arg>
      <constructor-arg value="12"></constructor-arg>
      <constructor-arg value="Korea"></constructor-arg>    
   
   </bean>

</beans>

User.java   method
package com.domain;

public class User {
   
    private String name;
    private int    age;
    private String country;
   
   // Construct Injection 에 사용되는 Method
    public User(String name,int age,String country){
        this.name = name;
        this.age  = age;
        this.country = country;
    }
   
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
   

    public String toString (){
        return "Name : " + name + " : " + age + " : " + country;
    }
   
}

UserApp.java

package com.service;

import javax.annotation.Resources;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;

import com.domain.User;

public class UserApp {

   
    public static void main (String[] args){
       //  static Log
        final Log logger = LogFactory.getLog(UserApp.class);
       
        logger.info("Logger Start ");
       
   //   ------------------ 방법 1 ----------------------------------//
   //  FileSystemResource ("") 경로에 주의                                          //
   //     Resource res = new FileSystemResource("src/beans.xml");
   //     XmlBeanFactory factory = new XmlBeanFactory(res);


   //  ------------------- 방법 2 ----------------------------------//   
   //  클래스 패스의 경로에 위치                                                         //
   //   ClassPathResource resource = new ClassPathResource ("beans.xml");
   //   XmlBeanFactory factory = new XmlBeanFactory(resource);
   
   // ----------------------- 방법 3 --------------------------------//   
        ClassPathXmlApplicationContext appContext =
                  new ClassPathXmlApplicationContext (new String[] {
                      "applicationContext.xml" , "applicationContext-2.xml"     
                  });
        BeanFactory factory = (BeanFactory) appContext;
       
        User user = (User) factory.getBean("user");
        User user2 = (User) factory.getBean("user2");

   // ------------------------- 방법 4 -------------------------------//
   //     ApplicationContext context = new ClassPathXmlApplicationContext ("beans.xml");
   //     User user = (User) context.getBean("user");

        logger.info ("User Class method Start" + user.toString());
        System.out.println(user.toString());
        System.out.println(user2.toString());
       
       
       
    }
}


2011년 11월 11일 금요일

SpringFramework BeanFactory 1

User.java

public class User {
     private String name;
     private int      age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;

    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
}


UserApplication.java

package com.domain.example 


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public UserApplication {

    
       public static void main (String[] args){
        
       // POJO Style Java Code  
       //  User user = new User();
       // System.out.println ("User Name is :" + user.getName +
        //                           "Age                :" + user.getAge );


       //------------------------------------------------------//
       // SpringFramework Bean Factory  Java Code                       //
       //------------------------------------------------------//

       ApplicationContext context = ClassPathXmlApplicationContext ("beans.xml"); 
       User  user = (User) context.getBean("user");
       System.out.println ("User name is : " + user.getName);


      }
}

 beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">

     <bean id="user" class="com.domain.example.User" />

</beans>