VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

Spring Tuts

Spring là gì? Kiến trúc Spring Spring - Thiết lập môi trường Spring HelloWorld Example Dependency Injection trong Spring IoC Containers trong Spring Định nghĩa Bean trong Spring Phạm vi của Bean trong Spring Vòng đời của Bean trong Spring Spring - Kế thừ Bean Spring - Inner Bean Spring - Injecting Collection Spring - Beans Auto-Wiring Annotation Based Configuration Spring - Java Based Configuration Spring - Event Handling in Spring Spring - Custom Events in Spring Spring - AOP with Spring Framework Spring - JDBC Framework Spring - Transaction Management Spring - Web MVC Framework Spring - Logging with Log4J

Spring Tool

Cài đặt Spring Tool Suite (STS) trong Eclipse Tạo Spring project bằng Spring Tool Suite trong Eclipse Tạo Spring project (annotation) bằng Spring Tool Suite (STS)

Spring 4 Example

Ví dụ login trong Spring 4 Web MVC – Hibernate 4 XML Mapping Ví dụ login trong Spring 4 Web MVC – Hibernate 4 Annotation
1 / 3
❮ ❯

Kế thừa Bean trong Spring


Previous
Next

Trong một định nghĩa bean có thể chứa rất nhiều thông tin cấu hình, bao gồm các đối số constructor, các giá trị thuộc tính và thông tin cụ thể của vùng chứa như phương thức khởi tạo, tên phương thức static factory, v.v.

Kế thừa Bean trong Spring, định nghĩa bean con thừa kế dữ liệu cấu hình từ định nghĩa bean cha. Định nghĩa con có thể ghi đè lên một số giá trị hoặc thêm các giá trị khác nếu cần.

Định nghĩa kế thừa Bean trong Spring không liên quan gì đến việc kế thừa lớp Java nhưng khái niệm kế thừa là giống nhau. Bạn có thể định nghĩa một định nghĩa bean cha làm mẫu và các bean con khác có thể kế thừa các cấu hình cần thiết từ bean cha.

Khi bạn sử dụng siêu dữ liệu cấu hình dựa trên XML, bạn chỉ định định nghĩa bean con bằng cách sử dụng thuộc tính parent, chỉ định tên của bean cha làm giá trị của thuộc tính này.


Nội dung chính

  • Ví dụ kế thừa Bean trong Spring
  • Mẫu định nghĩa Bean
  • Download Project

Ví dụ kế thừa Bean trong Spring

Tạo một Java Maven project trong Eclipse.

Cấu trúc project:

Kế thừa Bean trong Spring

Sau đó update file pom.xml để tải thư viện Spring như sau:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
  http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>vn.viettuts</groupId>
  <artifactId>SpringExample</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SpringExample</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.6.RELEASE</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>
  </dependencies>
</project>

Sau đây là file cấu hình Beans.xml nơi chúng ta định nghĩa bean "helloWorld" có hai thuộc tính message1 và message2. Tiếp theo là bean "helloVietnam" được định nghĩa là con của bean "helloWorld" bằng cách sử dụng thuộc tính parent. Bean con thừa hưởng thuộc tính message2 và ghi đè thuộc tính message1 và có thêm một thuộc tính message3.

<?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-3.0.xsd">

    <bean id="helloWorld" class="vn.viettuts.example.HelloWorld">
        <property name="message1" value="Hello World!" />
        <property name="message2" value="Hello Second World!" />
    </bean>

    <bean id=" helloVietnam" class="vn.viettuts.example.HelloVietnam" 
            parent="helloWorld">
        <property name="message1" value="Hello Vietnam" />
        <property name="message3" value="Welcome to Vietnam!" />
    </bean>
</beans>

Đây là nội dung của lớp HelloWorld.java

package vn.viettuts.example;

public class HelloWorld {
    private String message1;
    private String message2;

    public void setMessage1(String message1) {
        this.message1 = message1;
    }

    public void getMessage1() {
        System.out.println("Your Message : " + message1);
    }

    public void setMessage2(String message2) {
        this.message2 = message2;
    }

    public void getMessage2() {
        System.out.println("Your Message : " + message2);
    }
}

Đây là nội dung của lớp HelloVietnam.java

package vn.viettuts.example;

public class HelloVietnam {
    private String message1;
    private String message2;
    private String message3;

    public void setMessage1(String message1) {
        this.message1 = message1;
    }

    public void getMessage1() {
        System.out.println("Your Message : " + message1);
    }

    public void setMessage2(String message2) {
        this.message2 = message2;
    }

    public void getMessage2() {
        System.out.println("Your Message : " + message2);
    }

    public void setMessage3(String message3) {
        this.message3 = message3;
    }

    public void getMessage3() {
        System.out.println("Your Message : " + message3);
    }
}

Đây là nội dung của lớp MainApp.java

package vn.viettuts.example;

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

/**
 * Hello world!
 *
 */
public class MainApp {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "Beans.xml");
        HelloWorld objA = (HelloWorld) context.getBean("helloWorld");
        objA.getMessage1();
        objA.getMessage2();
        
        HelloVietnam objB = (HelloVietnam) context.getBean("helloVietnam");
        objB.getMessage1();
        objB.getMessage2();
        objB.getMessage3();
    }
}

Kết quả:

Your Message : Hello World!
Your Message : Hello Second World!
Your Message : Hello India!
Your Message : Hello Second World!
Your Message : Namaste India!

Chúng ta đã không truyền giá trị cho thuộc tính message2 trong khi tạo bean "helloVietnam", nhưng nó đã được truyền giá trị vì kế thừa bean "helloWorld".


Mẫu định nghĩa Bean

Bạn có thể tạo một mẫu định nghĩa Bean, có thể được sử dụng bởi các Bean con khác. Trong khi xác định nghĩa mẫu Định nghĩa Bean, bạn không nên chỉ định thuộc tính class và nên chỉ định thuộc tính abstract và phải chỉ định thuộc tính abstract có giá trị "true" như được hiển thị trong ví dụ sau:

<?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-3.0.xsd">

    <bean id="beanTeamplate" abstract="true">
        <property name="message1" value="Hello World!" />
        <property name="message2" value="Hello Second World!" />
        <property name="message3" value="Welcome to Vietnam!" />
    </bean>

    <bean id=" helloVietnam" class="vn.viettuts.example.HelloVietnam" 
            parent="beanTeamplate">
        <property name="message1" value="Hello Vietnam" />
        <property name="message3" value="Welcome to Vietnam!" />
    </bean>
</beans>

Bean cha không thể tự khởi tạo được vì nó không liên kết đến một lớp cụ thể, và nó cũng được đánh dấu rõ ràng là trừu tượng (abstract = "true"). Khi đó, nó chỉ có thể sử dụng như một định nghĩa bean mẫu được kế thừa bởi các Bean con.


Download Project

Download Now!

Previous
Next

Recent Updates

SpringLayout trong Java SwingMyBatis Example - MyBatis + SpringSpring là gì?Cài đặt Spring Tool Suite (STS) trong EclipseDependency Injection trong SpringĐịnh nghĩa Bean trong SpringInjecting Collection trong SpringInner Bean trong SpringIoC Container trong SpringKế thừa Bean trong SpringKiến trúc SpringPhạm vi của Bean trong SpringSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml