खोज…


परिचय

यह धागा हाइबरनेट और थाइमाइलफ टेम्पलेट इंजन के साथ स्प्रिंग बूट एप्लिकेशन बनाने के तरीके पर केंद्रित है।

टिप्पणियों

इसके अलावा Thymeleaf प्रलेखन की जाँच करें

मावेन निर्भरता

यह उदाहरण 1.5.1 बूट पर आधारित है। निम्नलिखित निर्भरताओं के साथ:

<!-- Spring -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<!-- H2 -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
<!-- Test -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

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

हाइबरनेट कॉन्फ़िगरेशन

पहले, हाइबरनेट को सही ढंग से सेटअप करने के लिए हमें जो आवश्यक है उसका अवलोकन करने देता है।

  1. @EnableTransactionManagement और @EnableJpaRepositories - हम लेन-देन प्रबंधन चाहते हैं और स्प्रिंग डेटा रिपॉजिटरी का उपयोग करते हैं।
  2. DataSource - अनुप्रयोग के लिए मुख्य डेटा स्रोत। इस उदाहरण के लिए स्मृति h2 का उपयोग करना।
  3. LocalContainerEntityManagerFactoryBean - HibernateJpaVendorAdapter का उपयोग करके वसंत इकाई प्रबंधक कारखाना।
  4. PlatformTransactionManager - @Transactional ट्रांसेक्शनल एनोटेट घटकों के लिए मुख्य लेनदेन प्रबंधक।

विन्यास फाइल:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.example.repositories")
public class PersistanceJpaConfig {
    
    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("org.h2.Driver");
        dataSource.setUrl("jdbc:h2:mem:testdb;mode=MySQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
        dataSource.setUsername("sa");
        dataSource.setPassword("");
        return dataSource;
    }
    
    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource);
        em.setPackagesToScan(new String[] { "com.example.models" });
        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        em.setJpaProperties(additionalProperties());
        return em;
    }

    @Bean
    public PlatformTransactionManager transactionManager(LocalContainerEntityManagerFactoryBean entityManagerFactory, DataSource dataSource) {
        JpaTransactionManager tm = new JpaTransactionManager();
        tm.setEntityManagerFactory(entityManagerFactory.getObject());
        tm.setDataSource(dataSource);
        return tm;
    }

    Properties additionalProperties() {
        Properties properties = new Properties();
        properties.setProperty("hibernate.hbm2ddl.auto", "update");
        properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
        return properties;
    }

}

संस्थाओं और प्रस्तावों

एक साधारण इकाई: हमारे लिए @Getter और @Setter लिए @Setter @Getter और @Setter एनोटेशन का उपयोग करना

@Entity
@Getter @Setter
public class Message {
    
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    private String id;
    private String message;

}

मैं गेटर्स और सेटर जनरेट करने के लिए UUID आधारित आईडी और लोमबॉक का उपयोग कर रहा हूं।

उपरोक्त इकाई के लिए एक सरल भंडार:

@Transactional
public interface MessageRepository extends CrudRepository<Message, String> {
}

रेस्पिरेटरी पर अधिक: स्प्रिंग डेटा डॉक्स

सुनिश्चित करें कि निकाय एक पैकेज में रहते हैं, जो em.setPackagesToScan ( LocalContainerEntityManagerFactoryBean सेम में परिभाषित) और basePackages में मैप किए गए पैकेज में basePackages ( @EnableJpaRepositories एनोटेशन में परिभाषित) में मैप किया गया है।

Thymeleaf Resources और स्प्रिंग नियंत्रक

Thymeleaf टेम्पलेट्स को उजागर करने के लिए हमें नियंत्रकों को परिभाषित करने की आवश्यकता है।

उदाहरण:

@Controller
@RequestMapping("/")
public class MessageController {
    
    @Autowired
    private MessageRepository messageRepository;
    
    @GetMapping
    public ModelAndView index() {
        Iterable<Message> messages = messageRepository.findAll();
        return new ModelAndView("index", "index", messages);
    }
    
}

यह सरल नियंत्रक MessageRepository इंजेक्ट MessageRepository और सभी संदेशों को index.html नाम की एक टेम्प्लेट फ़ाइल में देता है, जो src/main/resources/templates MessageRepository src/main/resources/templates में रहता है और अंत में इसे /index पर एक्सपोज़ करता है।

उसी तरह, हम अन्य टेम्पलेट्स को टेम्पलेट फ़ोल्डर में रख सकते हैं (डिफ़ॉल्ट रूप से वसंत द्वारा src/main/resources/templates ), उनके लिए एक मॉडल पास करें और उन्हें क्लाइंट को सेवा दें।

अन्य स्थैतिक संसाधनों को निम्नलिखित फ़ोल्डरों में से एक में रखा जाना चाहिए, जो स्प्रिंग बूट में डिफ़ॉल्ट रूप से सामने आते हैं:

/META-INF/resources/
/resources/
/static/
/public/

Thymeleaf index.html उदाहरण:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
    <head th:fragment="head (title)">
        <title th:text="${title}">Index</title>
        <link rel="stylesheet" th:href="@{/css/bootstrap.min.css}" href="../../css/bootstrap.min.css" />
    </head>
    <body>
        <nav class="navbar navbar-default navbar-fixed-top">
          <div class="container-fluid">
            <div class="navbar-header">
              <a class="navbar-brand" href="#">Thymeleaf</a>
            </div>
          </div>
        </nav>
        <div class="container">
            <ul class="nav">
                <li><a th:href="@{/}" href="messages.html"> Messages </a></li>
            </ul>
        </div>
    </body>
</html>
  • bootstrap.min.css src/main/resources/static/css फ़ोल्डर में है। आप सापेक्ष पथ का उपयोग करके अन्य स्थिर संसाधनों को प्राप्त करने के लिए सिंटैक्स @{} का उपयोग कर सकते हैं।


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