首页 > 编程语言 >浅谈Java库之Spring Framework

浅谈Java库之Spring Framework

时间:2024-11-28 11:30:48浏览次数:7  
标签:Java 浅谈 Spring org boot spring import public

一、Spring Framework 介绍

        Spring Framework 是一个功能强大的 Java 应用程序框架,旨在提供高效且可扩展的开发环境。它结合了轻量级的容器和依赖注入功能,提供了一种使用 POJO 进行容器配置和面向切面的编程的简单方法,以及一组用于AOP的模块。Spring 框架还支持各种移动应用开发技术,如 Android 和 iOS。此外,它还提供了对事务管理、对象/关系映射、JavaBeans、JDBC、JMS 和其他技术的支持,从而确保高效开发。

二、Spring Framework 核心功能

1、控制反转(IoC)

Spring 通过控制反转(IoC)容器来管理对象的生命周期和依赖关系,从而实现解耦合。

2、面向切面编程(AOP)

Spring 提供了面向切面编程的支持,可以方便地实现对程序进行权限拦截、运行监控等功能。

3、数据访问/集成

包括 JDBC、ORM、OXM、JMS 和 Transaction 模块,简化了数据库操作和事务管理。

4、Web 模块

包括 WebSocket、Servlet、Web、Portlet 模块,Spring MVC 已成为 Java Web 的主流框架。

5、核心容器

包括 Bean 模块、Core 模块、Context 模块 和 SpEL 模块,提供了强大的容器支持。

三、Spring Framework 使用方法

1、环境要求

JDK 8-15,Spring 5.3.24。

2、构建工程

使用 Spring Initializr 生成基础项目,依赖于 Spring Boot Parent 项目,并添加必要的依赖,如 spring-boot-starter-web 和 spring-boot-starter-data-jpa。

3、应用配置

创建 Main Application 类,并使用 @SpringBootApplication 注解,这相当于同时使用了 @Configuration、 @EnableAutoConfiguration 和 @ComponentScan 注解。

4、MVC 视图

使用 Thymeleaf 添加一个简单的 HTML 前端页面,并在 pom.xml 中添加 spring-boot-starter-thymeleaf 依赖。

5、安全配置

添加 Security Starter,并自定义安全配置,允许任何请求不受限制地访问所有端点。

6、持久层配置:定义实体类和对应的 Repository,使用 Spring Data 进行数据访问。

四、简单完整代码示例

1、项目结构

src
└── main
    ├── java
    │   └── com
    │       └── example
    │           ├── demo
    │           │   ├── DemoApplication.java
    │           │   └── controller
    │           │       └── UserController.java
    │           ├── model
    │           │   └── User.java
    │           └── repository
    │               └── UserRepository.java
    └── resources
        ├── application.properties
        └── static
            └── index.html

2. 依赖配置(pom.xml)

<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>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3. 主应用类(DemoApplication.java)

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

4. 用户模型(User.java)

package com.example.demo.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String email;

    // Constructors, getters and setters
    public User() {}

    public User(String name, String email) {
        this.name = name;
        this.email = email;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

5. 用户仓库接口(UserRepository.java)

package com.example.demo.repository;

import com.example.demo.model.User;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends CrudRepository<User, Long> {
}

6. 用户控制器(UserController.java)

package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserRepository userRepository;

    @GetMapping
    public List<User> listUsers() {
        return userRepository.findAll();
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userRepository.save(user);
    }
}

7. 应用配置(application.properties)

# DataSource
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

# H2 Console
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

# JPA
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

8. 静态首页(index.html)

<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h1>Welcome to the User Application</h1>
</body>
</html>

标签:Java,浅谈,Spring,org,boot,spring,import,public
From: https://blog.csdn.net/a876106354/article/details/144106373

相关文章

  • SpringCloud微服务(一)
    前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。一、什么是微服务?微服务是一种架构风格,它是将一个大型的单体应用程序拆分成一组小型的、相互独立的服务,每个服务都专注于完成一个特定的业务功能,并且可以独立地进行开发、......
  • JAVA WEB和Tomcat各组件概念
    概述本篇文章是https://juejin.cn/post/7055306172265414663,这篇文章的再总结,剔除了与Java安全研究没太大关系的内容,对JAVAWEB中的Servlet、Filter、Listener以及Connector、Container则加重了篇幅。ServletServlet是运行在Web服务器或应用服务器上的程序,它充当了客户端HTT......
  • leetcode hot100【LeetCode 169. 多数元素】java实现
    LeetCode169.多数元素题目描述给定一个大小为n的数组nums,找到其中的多数元素。多数元素是指在数组中出现次数大于n/2的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:nums=[3,2,3]输出:3示例2:输入:nums=[2,2,1,1,1,2,......
  • springboot毕设 体育场馆运营 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全民健身意识的显著提升以及体育产业的蓬勃发展,体育场馆作为承载各类体育活动的重要场所,其运营模式和效率直接影响着体育服务的质量和普及程度。......
  • springboot毕设 体检中心信息管理系统 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着社会经济的不断进步和人们生活水平的日益提高,健康已成为现代人最为关注的话题之一。体检作为预防疾病、维护健康的重要手段,其重要性日益凸显。传......
  • 宠物之家:基于SpringBoot的领养平台
    第1章绪论1.1课题背景二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。时代进步的标志,就是让人们过上更好的生活。在互联网诞生之前,地域位置往往是人们思想上不可跨域的鸿沟,信息的传播速度极慢,信息处理的速度和要求还是通......
  • 深入理解Java基础之MAP
     一、MAP简介        MAP是Java中的一种数据结构,以键值对的形式存储数据,常用于快速查找和操作数据。         Map集合类存储元素时,采用“键”和“值”的方式存储。Map中常见的构造函数定义多样,如Map<String,String>map=newHashMap<String,......
  • Java学习,接口
    接口,JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法,接口则包含类要实现的方法。除非实现接口的类是抽象......
  • Java学习,继承(1)
    Java继承是面向对象的编程特性,允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的字段和方法。通过继承,子类可以获得父类的所有公共(public)和保护(protected)成员,并可以添加新的成员或覆盖(override)父类的方法。基本概念父类(SuperClass):被继承的类。子类(SubClass):继承父类......
  • javaweb基于JSP+Servlet开发学生选课系统源码(管理员 教师 学生) 课程设计 毕业设计
    ......