खोज…


Jdbc इनबाउंड एडाप्टर - xml कॉन्फ़िगरेशन

आधिकारिक संदर्भ दस्तावेज में , यह कहता है:

एक इनबाउंड चैनल एडाप्टर का मुख्य कार्य SQL चयन क्वेरी को निष्पादित करना और परिणाम को संदेश के रूप में सेट करना है। संदेश पेलोड संपूर्ण परिणाम सेट है, जिसे एक सूची के रूप में व्यक्त किया गया है, और सूची में आइटम का उपयोग किए जाने वाले पंक्ति-मैपिंग रणनीति पर निर्भर करता है। डिफ़ॉल्ट रणनीति एक सामान्य मैपर है जो क्वेरी परिणाम में प्रत्येक पंक्ति के लिए एक मैप देता है।

Jdbc इनबाउंड एडाप्टर

  • सोर्स कोड

    public class Application {
       static class Book {
          String title;
          double price;
    
          Book(String title, double price) {
              this.title = title;
              this.price = price;
          }
    
          double getPrice() {
              return price;
          }
    
          String getTitle() {
              return title;
          }
    
          @Override
          public String toString() {
              return String.format("{title: %s, price: %s}", title, price);
          }
        }
    
        static class Consumer {
          public void consume(List<Book> books) {
              books.stream().forEach(System.out::println);
          }
        }
    
        static class BookRowMapper implements RowMapper<Book> {
    
          @Override
          public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
              String title = rs.getString("TITLE");
              double price = rs.getDouble("PRICE");
              return new Book(title, price);
          }
        }
    
        public static void main(String[] args) {
          new ClassPathXmlApplicationContext(
                  "classpath:spring/integration/stackoverflow/jdbc/jdbc.xml");
        }
    }
    
  • 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"
           xmlns:jdbc="http://www.springframework.org/schema/jdbc"
           xmlns:int="http://www.springframework.org/schema/integration"
           xmlns:int-jdbc="http://www.springframework.org/schema/integration/jdbc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
           http://www.springframework.org/schema/integration/jdbc http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd
           http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
        <jdbc:embedded-database id="dataSource" type="H2">
            <jdbc:script location="classpath:spring/integration/stackoverflow/jdbc/schema.sql"/>
        </jdbc:embedded-database>
        <bean id="bookRowMapper"
              class="spring.integration.stackoverflow.jdbc.Application$BookRowMapper"/>
    
        <int:channel id="channel"/>
    
        <int-jdbc:inbound-channel-adapter id="jdbcInbound"
                                          channel="channel"
                                          data-source="dataSource"
                                          query="SELECT * FROM BOOKS"
                                          row-mapper="bookRowMapper">
            <int:poller fixed-rate="1000"/>
        </int-jdbc:inbound-channel-adapter>
    
        <int:outbound-channel-adapter id="outbound" channel="channel" method="consume">
            <bean class="spring.integration.stackoverflow.jdbc.Application$Consumer"/>
        </int:outbound-channel-adapter>
    </beans>
    
  • schema.sql

    CREATE TABLE BOOKS (
      TITLE VARCHAR(20) NOT NULL,
      PRICE DOUBLE      NOT NULL
    );
    
    INSERT INTO BOOKS(TITLE, PRICE) VALUES('book1', 10);
    INSERT INTO BOOKS(TITLE, PRICE) VALUES('book2', 20);
    
  • सारांश:

    • jdbcInbound : एक jdbcInbound इनबाउंड चैनल अडैप्टर। यह SELECT * FROM BOOKS SQL SELECT * FROM BOOKS bookRowMapper निष्पादित करता है और परिणाम सेट को List<Book> bookRowMapper List<Book> में बीन bookRowMapper माध्यम से bookRowMapper । अंत में, यह इस पुस्तक सूची को चैनल channel भेजता है।
    • channel : संदेश स्थानांतरित करें
    • outbound : एक सामान्य आउटबाउंड एडाप्टर। जेनेरिक इनबाउंड और आउटबाउंड चैनल एडाप्टर देखें

Jdbc आउटबाउंड चैनल एडाप्टर - xml कॉन्फ़िगरेशन

वसंत एकीकरण संदर्भ डॉक्यूमेंट में , यह कहता है:

आउटबाउंड चैनल एडाप्टर इनबाउंड का व्युत्क्रम है: इसकी भूमिका एक संदेश को संभालने और SQL क्वेरी को निष्पादित करने के लिए इसका उपयोग करने के लिए है। संदेश पेलोड और हेडर डिफ़ॉल्ट रूप से क्वेरी के इनपुट पैरामीटर के रूप में उपलब्ध हैं ...

यहाँ छवि विवरण दर्ज करें

  • जावा कोड

    public class OutboundApplication {
        static class Book {
            String title;
            double price;
    
            Book(String title, double price) {
                this.title = title;
                this.price = price;
            }
    
            public double getPrice() {
                return price;
            }
    
            public String getTitle() {
                return title;
            }
    
        }
    
        static class Producer {
            public Book produce() {
                return IntStream.range(0, 3)
                        .mapToObj(i -> new Book("book" + i, i * 10))
                        .collect(Collectors.toList())
                        .get(new Random().nextInt(3));
            }
        }
    
        public static void main(String[] args) {
            new ClassPathXmlApplicationContext(
                    "classpath:spring/integration/stackoverflow/jdbc/jdbc-outbound.xml");
        }
    }
    
  • xml config फाइल

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:jdbc="http://www.springframework.org/schema/jdbc"
           xmlns:int="http://www.springframework.org/schema/integration"
           xmlns:int-jdbc="http://www.springframework.org/schema/integration/jdbc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/jdbc
           http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
           http://www.springframework.org/schema/integration
           http://www.springframework.org/schema/integration/spring-integration.xsd
           http://www.springframework.org/schema/integration/jdbc
           http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc.xsd">
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="url" value="jdbc:h2:tcp://localhost/~/booksystem"/>
            <property name="username" value="sa"/>
            <property name="password" value=""/>
            <property name="driverClassName" value="org.h2.Driver"/>
        </bean>
        <jdbc:initialize-database>
            <jdbc:script location="classpath:spring/integration/stackoverflow/jdbc/schema.sql"/>
        </jdbc:initialize-database>
        <int:channel id="channel"/>
        <int:inbound-channel-adapter channel="channel" method="produce" >
            <bean class="spring.integration.stackoverflow.jdbc.OutboundApplication$Producer"/>
            <int:poller fixed-rate="1000"/>
        </int:inbound-channel-adapter>
        <int-jdbc:outbound-channel-adapter id="jdbcOutbound"
                                           channel="channel"
                                           data-source="dataSource"
                                           sql-parameter-source-factory="sqlParameterSource"
                                           query="INSERT INTO BOOKS(TITLE, PRICE) VALUES(:title, :price)"/>
        <bean id="sqlParameterSource"   class="org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory">
            <property name="parameterExpressions">
                <map>
                    <entry key="title" value="payload.title"/>
                    <entry key="price" value="payload.price"/>
                </map>
            </property>
        </bean>
    </beans>
    
  • schema.sql

    DROP TABLE IF EXISTS BOOKS;
    CREATE TABLE BOOKS (
      TITLE VARCHAR(20) NOT NULL,
      PRICE DOUBLE      NOT NULL
    );
    
  • आप BOOKS देख सकते हैं, और आप देख सकते हैं कि रिकॉर्ड डाले गए हैं। या आप एक int-jdbc:inbound-channel-adapter लिख सकते हैं BOOKS टेबल को गिनने के लिए और आप पा सकते हैं कि गिनती संख्या लगातार बढ़ रही है।

  • सारांश:

    • inbound : एक सामान्य इनबाउंड एडॉप्टर का उपयोग Book ऑब्जेक्ट को संदेश पेलोड के रूप में प्राप्त करने और चैनल channel भेजने के लिए किया जाता है।
    • channel : संदेश स्थानांतरित करने के लिए उपयोग किया जाता है।
    • jdbcOutbound : एक jdbc आउटबाउंड एडॉप्टर, यह Book प्रकार के साथ संदेश प्राप्त करता है और फिर क्वेरी पैरामीटर तैयार करता है :title और :price sqlParameterSource बीन के माध्यम से SPEL जैसे payload.title का उपयोग कर। टाइटल और payload.price .price शीर्षक और मूल्य के रूप में संदेश पेलोड प्राप्त करता है।


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow