www.91084.com

GVKun编程网logo

如何使用 Java 框架构建云原生微服务?(springcloud 云原生框架)

4

这篇文章主要围绕如何使用Java框架构建云原生微服务?和springcloud云原生框架展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何使用Java框架构建云原生微服务?的优缺点,解答spri

这篇文章主要围绕如何使用 Java 框架构建云原生微服务?springcloud 云原生框架展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何使用 Java 框架构建云原生微服务?的优缺点,解答springcloud 云原生框架的相关问题,同时也会为您带来Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决、Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:、Java gson 使用 将 Java 对象转为 Json 并 Json 转回 Java 对象、Java JNDI 与其他 Java 技术的协作:揭秘 Java JNDI 与 Java EE 等技术的融合的实用方法。

本文目录一览:

如何使用 Java 框架构建云原生微服务?(springcloud 云原生框架)

如何使用 Java 框架构建云原生微服务?(springcloud 云原生框架)

答案:使用 java 框架,如 spring boot,可快速构建和部署可扩展且可维护的云原生微服务。步骤:使用 spring initializr 创建 spring boot 项目并选择依赖项。定义用户实体、存储库和控制器。启动 spring boot 应用程序。选择云平台并创建服务。部署代码并启用监控和日志记录。构建一个用户管理微服务,处理用户请求并连接到数据库。

如何使用 Java 框架构建云原生微服务?

如何使用 Java 框架构建云原生微服务

在当今的微服务架构中,Java 仍是一种流行的选择。借助 Spring Boot 等 Java 框架,您可以快速构建和部署可扩展且可维护的微服务。

Spring Boot 概览

Spring Boot 是一种微服务开发框架,它简化了应用程序的配置和启动过程。它提供了开箱即用的功能,包括:

  • 自动配置
  • 嵌入式服务器
  • 依赖管理

创建一个 Spring Boot 微服务

  1. 创建项目:使用 Spring Initializr 创建一个新的 Spring Boot 项目。选择以下依赖项:

    立即学习“Java免费学习笔记(深入)”;

    • Web
    • Spring Data JPA
  2. 定义实体:创建 User 实体类:

    @Entity
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String name;
        private String email;
        // getters and setters
    }
    登录后复制
  3. 定义存储库:创建 UserRepository 存储库接口:

    public interface UserRepository extends JpaRepository<User, Long> {}
    登录后复制
  4. 定义控制器:创建 UserController 控制器:

    @RestController
    public class UserController {
    
        @Autowired
        private UserRepository userRepository;
    
        @GetMapping("/users")
        public List<User> getAllUsers() {
            return userRepository.findAll();
        }
    }
    登录后复制
  5. 启动应用程序:在 main 方法中启动 Spring Boot 应用程序:

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    登录后复制

部署到云平台

  1. 选择云平台:选择一个云平台来部署您的微服务,例如 AWS、Azure 或 Google Cloud。
  2. 创建服务:在选定的云平台上创建服务,并配置其资源(例如内存、CPU)。
  3. 部署代码:将您的微服务代码部署到云服务中。
  4. 启用监控和日志记录:配置监控和日志记录服务,以监视微服务的运行状况和调试问题。

实战案例

一个用于管理用户的微服务:

  • 使用 Spring Boot 构建一个微服务,用于处理用户注册、登录和注销请求。
  • 使用 Spring Data JPA 连接到数据库并管理用户数据。
  • 使用 RESTful API 为客户端应用程序提供对其用户数据的访问权限。

以上就是如何使用 Java 框架构建云原生微服务?的详细内容,更多请关注php中文网其它相关文章!

Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决

Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决

Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决

IDEA 发现一个奇怪的错误
今天用 IDEA2018.1 运行 SpringBoot 项目报错如下:
Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError: org/springframework/boot/configurationprocessor/metadata/ConfigurationMetadata at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:169)
解决方案:
分下看这个跟 Eclipse 有关,可是这个不是 Eclipse 项目(没有 Eclipse 的 Workspeace 信息),后来查找发现跟 Eclipse 有关设置就是之前自己设置锅编译器,改过来问题得到解决。解决步骤:IDEA 中 File-->settings-->Bulid Execution Deloyment-->Complier-->Java Complier 中的 user complier 有原来的 Eclipse 改为 javac 即可

Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:

Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:

如何解决Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:

我用Oracle 19c作为数据库构建了一个Spring Boot应用程序。我已经使用Spring Data Rest和JPA基于数据库中的表和一些简单的端点创建了实体,但是当为所有记录调用数据库时,它从第二条记录开始返回数据,并且当我尝试访问以id为路径的端点时变量以检索单个对象,发生错误。

我用Postman测试我的休息控制器。带有users / 1的Spring Data Rest没有返回任何内容,并且返回404状态。输入URL的EntityManager也不返回任何值,但状态为200。当我尝试从控制器中的JpaRepository findById()调用该方法时,它显示错误500。

User.java

@Entity
@Table(name = "USER")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private int id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "USERNAME")
    private String username;

    @Column(name = "PASSWORD")
    private String password;

    @ManyToMany(cascade = {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch = FetchType.LAZY)
    @JoinTable(name = "USER_ROLE",joinColumns = @JoinColumn(name = "USER_ID"),inverseJoinColumns = @JoinColumn(name = "ROLE_ID"))
    private List<Role> roles;

    public User() {
    }

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

   // setters/getters
}

Role.java

@Entity
@Table(name = "ROLE")
public class Role {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private int id;

    @Column(name = "NAME")
    private String name;

    @ManyToMany(mappedBy = "roles")
    private List<User> users;


    public Role() {
    }

    public Role(String name) {
        this.name = name;
    }

    // setters/getters
}

UserRepository.java

@Repository
public interface UserRepository extends JpaRepository<User,Integer> {
}

application.properties

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:placeholder
spring.datasource.username=placeholder
spring.datasource.password=placeholder

spring.jpa.show-sql=true
hibernate.dialect=org.hibernate.dialect.Oracle12cDialect

UserController.java

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private EntityManager entityManager;

    @Transactional
    @GetMapping("/")
    public List<User> getAll() {
        List<User> users = entityManager.createquery("from User",User.class).getResultList();
        System.out.println(users);
        return users;
    }

    @Transactional
    @GetMapping("/{userId}")
    public User getUser(@PathVariable("userId") Integer userId) {
        System.out.println("Sended id: " + userId);
        return userRepository.findById(userId).get();
    }
}

错误消息

Sended id: 1
Hibernate: select user0_.id as id1_2_0_,user0_.name as name2_2_0_,user0_.password as password3_2_0_,user0_.username as username4_2_0_ from user_table user0_ where user0_.id=?
2020-09-19 15:48:27.350 ERROR 18860 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing Failed; nested exception is java.util.NoSuchElementException: No value present] with root cause

java.util.NoSuchElementException: No value present
    at java.base/java.util.Optional.get(Optional.java:141) ~[na:na]
    at springboot.resources.UserController.getUser(UserController.java:41) ~[classes/:na]
    at springboot.resources.UserController$$FastClassBySpringcglib$$344055f.invoke(<generated>) ~[classes/:na]
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.aop.framework.cglibAopProxy$DynamicAdvisedInterceptor.intercept(cglibAopProxy.java:687) ~[spring-aop-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at springboot.resources.UserController$$EnhancerBySpringcglib$$a0145449.getUser(<generated>) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[na:na]
    at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:190) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:138) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1040) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:943) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.37.jar:4.0.FR]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.37.jar:4.0.FR]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
    at java.base/java.lang.Thread.run(Thread.java:830) ~[na:na]

邮差的结果:

UserController.java:

https://imgur.com/f56A1Ln

https://imgur.com/52fBKS4

https://imgur.com/9Xo5PuO

从Spring Data Rest自动创建的端点:

https://imgur.com/TIGe1Q9

https://imgur.com/1FN4geC

https://imgur.com/klBJLZb

数据库中的数据:https://imgur.com/q4oH9O7

有解决此问题的建议吗?

解决方法

删除@Transaction,希望它能工作。

,

我还是java的新手程序员,但是我会根据我的经验尝试回答

存储库findById返回Optional,因此,当您直接使用userRepository.findById(userId).get()并且对应的userId不存在时,就会发生异常java.util.NoSuchElementException

使用Optional时,请确保先检查该值是否存在,然后再使用get。将getUser方法更改为

@Transactional
@GetMapping("/{userId}")
public User getUser(@PathVariable("userId") Integer userId) {
 
Optional<User> user = userRepository.findById(userId);
return user.ifPresent() ? user : null;
}

在不存在Response的情况下,我建议使用HttpStatus 404对象返回特定的userId,这是查询byId操作的标准方式。

Java gson 使用 将 Java 对象转为 Json 并 Json 转回 Java 对象

Java gson 使用 将 Java 对象转为 Json 并 Json 转回 Java 对象

http://blog.csdn.net/anialy/article/details/7772546

Java JNDI 与其他 Java 技术的协作:揭秘 Java JNDI 与 Java EE 等技术的融合

Java JNDI 与其他 Java 技术的协作:揭秘 Java JNDI 与 Java EE 等技术的融合

java jndi 与其他 java 技术的协作:揭秘 java jndi 与 java ee 等技术的融合

Java JNDI 简介

Java JNDI(Java Naming and Directory Interface)是Java中用于访问命名和目录服务的API,与Java EE等技术的协作至关重要。在实际开发中,Java JNDI可以与Java EE框架无缝融合,为应用程序提供更灵活的资源访问方式。本文将深入探讨Java JNDI与其他Java技术的协作,揭示它们之间的关联与互补,帮助开发者更好地理解和应用这些技术。

Java JNDI 与 Java EE 的协作

Java JNDI与Java EE有着密切的协作,在Java EE应用程序中扮演着重要的角色。Java EE规范中定义了JNDI作为标准的命名和目录服务API,Java EE应用程序可以通过JNDI来访问各种命名和目录服务中的数据。

JNDI在Java EE中的应用

在Java EE应用程序中,JNDI主要用于以下几个方面:

  • 资源查找: Java EE应用程序可以使用JNDI来查找各种资源,如数据源、消息队列、EJB组件等。这些资源通常由应用程序服务器管理,Java EE应用程序可以通过JNDI来访问这些资源,而无需关心资源的具体位置和访问方式。
  • 服务发现: Java EE应用程序可以使用JNDI来发现其他服务,如WEB服务、EJB组件等。这些服务通常由应用程序服务器注册,Java EE应用程序可以通过JNDI来查找这些服务,并与之通信。
  • 命名空间管理: Java EE应用程序可以使用JNDI来管理命名空间,如全局JNDI命名空间和Web应用程序JNDI命名空间等。Java EE应用程序可以通过JNDI来创建、修改和删除命名空间中的对象,并访问命名空间中的对象。

Java JNDI与Java EE的集成

Java JNDI与Java EE的集成主要通过以下几个方面来实现:

立即学习“Java免费学习笔记(深入)”;

  • Java EE应用程序服务器: Java EE应用程序服务器通常提供了一个JNDI服务,用于管理命名空间和资源。Java EE应用程序可以通过JNDI服务来查找资源和服务。
  • Java EE规范: Java EE规范中定义了JNDI作为标准的命名和目录服务API。Java EE应用程序可以使用JNDI来访问各种命名和目录服务中的数据。
  • JNDI API: Java JNDI API提供了一组丰富的类和接口,用于访问命名和目录服务中的数据。Java EE应用程序可以通过JNDI API来实现资源查找、服务发现和命名空间管理等功能。

Java JNDI 与其他 Java 技术的协作

除了Java EE之外,Java JNDI还与其他Java技术有着密切的协作,如Java RMI、Java CORBA、Java Servlet等。

Java JNDI与Java RMI的协作

Java JNDI与Java RMI(Remote Method Invocation)协作,使Java程序能够通过网络调用远程对象的方法。Java RMI中,远程对象可以注册到JNDI命名空间中,其他Java程序可以通过JNDI来查找远程对象,并调用远程对象的方法。

Java JNDI 与 Java CORBA 的协作

Java JNDI 与 Java CORBA(Common Object Request Broker Architecture)协作,使Java程序能够与其他语言(如c++C#等)编写的 CORBA 对象进行通信。Java CORBA 对象可以注册到 JNDI 命名空间中,其他 Java 程序或其他语言编写的 CORBA 程序可以通过 JNDI 来查找 CORBA 对象,并调用 CORBA 对象的方法。

Java JNDI 与 Java Servlet 的协作

Java JNDI 与 Java Servlet 协作,使 Servlet 能够访问各种资源,如数据源、消息队列等。Servlet 可以通过 JNDI 来查找资源,并使用这些资源。

总结

Java JNDI 作为 Java 平台上通用的命名和目录服务 API,不仅与 Java EE 有着密切的协作,还与其他 Java 技术(如 Java RMI、Java CORBA、Java Servlet 等)有着密切的协作。在项目开发中,Java JNDI 发挥着重要的作用,帮助 Java 程序员轻松地访问和操纵命名和目录服务中的数据,实现资源查找、服务发现和命名空间管理等功能。

>软考高级考试备考技巧/历年真题/备考精华资料" target="_blank">点击免费下载>>软考高级考试备考技巧/历年真题/备考精华资料

以上就是Java JNDI 与其他 Java 技术的协作:揭秘 Java JNDI 与 Java EE 等技术的融合的详细内容,更多请关注php中文网其它相关文章!

关于如何使用 Java 框架构建云原生微服务?springcloud 云原生框架的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决、Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:、Java gson 使用 将 Java 对象转为 Json 并 Json 转回 Java 对象、Java JNDI 与其他 Java 技术的协作:揭秘 Java JNDI 与 Java EE 等技术的融合等相关知识的信息别忘了在本站进行查找喔。

本文标签: