【Java万花筒】Java框架全家福:企业级开发精华剖析

2024-02-06 12:52

本文主要是介绍【Java万花筒】Java框架全家福:企业级开发精华剖析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Struts革新:构建现代化Web应用的利器

前言

在当今企业级应用程序开发的领域中,Java语言以其强大的生态系统和稳定性跻身于首选之列。本文将深入探讨Java企业级开发中的关键框架与库,为开发人员提供全面的了解和实际运用指南。无论是构建强大的Web应用、管理持久层数据,还是实现分布式系统,Java的生态系统都提供了丰富的解决方案。

欢迎订阅专栏:Java万花筒

文章目录

  • Struts革新:构建现代化Web应用的利器
    • 前言
      • 1. Spring框架
        • 1.1 Spring核心
        • 1.2 Spring MVC
        • 1.3 Spring Boot
        • 1.4 Spring Data
        • 1.5 Spring Security
        • 1.6 Spring WebFlux
          • 1.6.1 Spring WebFlux与Router函数式编程
        • 1.7 Spring Cloud
          • 1.7.1 Spring Cloud Gateway
        • 1.8 Spring Batch
        • 1.9 Spring Integration
          • 1.9.1 Spring Integration与JMS
        • 1.10 Spring HATEOAS
          • 1.10.1 Spring WebSocket
        • 1.11 Spring Social
          • 1.11.1 Spring Mobile
        • 1.12 Spring Session
        • 1.13 Spring Kafka
          • 1.13.1 Spring Batch与Kafka集成
        • 1.14 Spring Boot Actuator
        • 1.15 Spring Boot Admin
        • 1.16 Spring Boot Test
      • 2. Jakarta EE (前身是Java EE)
        • 2.1 Servlet API
        • 2.2 JavaServer Faces (JSF)
        • 2.3 Enterprise JavaBeans (EJB)
        • 2.4 Java Persistence API (JPA)
        • 2.5 Java Message Service (JMS)
        • 2.6 Java Transaction API (JTA)
        • 2.7 Contexts and Dependency Injection (CDI)
        • 2.8 Java API for WebSocket (JSR-356)
        • 2.9 Batch Applications for the Java Platform (JSR-352)
        • 2.10 Java API for JSON Processing (JSON-P)
      • 3. Hibernate(Java持久层框架)
        • 3.1 Hibernate核心
        • 3.2 Hibernate验证器
        • 3.3 Hibernate搜索
        • 3.4 Hibernate审计
        • 3.5 Hibernate ORM
        • 3.6 Hibernate Envers
        • 3.7 Hibernate Validator
        • 3.8 Hibernate OGM
        • 3.9 Hibernate Reactive
      • 4. Apache Struts
        • 4.1 Struts核心
        • 4.2 Struts标签库
        • 4.3 Struts验证器
        • 4.4 Struts Tiles
        • 4.5 Struts 2
        • 4.6 Struts REST Plugin
        • 4.7 Struts JSON Plugin
        • 4.8 Struts Spring Plugin
      • 5. Apache MyBatis
        • 5.1 MyBatis核心
        • 5.2 MyBatis与Spring集成
        • 5.3 MyBatis生成器
        • 5.4 MyBatis动态SQL
        • 5.5 MyBatis插件
        • 5.6 MyBatis缓存
        • 5.7 MyBatis Spring Boot Starter
      • 6. Apache Camel
        • 6.1 Camel核心
        • 6.2 Camel与Spring Boot集成
        • 6.3 Camel组件
        • 6.4 Camel路由
        • 6.5 Camel转换器
        • 6.6 Camel企业集成模式
        • 6.7 Camel Spring Boot Starter
    • 总结

1. Spring框架

Spring框架是一个轻量级的Java开发框架,用于构建企业级应用程序和Web应用程序。它提供了全面的基础设施支持,包括依赖注入(Dependency Injection)、面向切面编程(Aspect Oriented Programming)等功能。以下是Spring框架的几个核心模块:

1.1 Spring核心

Spring核心模块提供了核心功能,如依赖注入和面向切面编程。依赖注入允许开发人员轻松管理应用程序中的对象之间的依赖关系,而面向切面编程提供了一种分离关注点的方法。

import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class MainApplication {public static void main(String[] args) {// 创建Spring应用程序上下文AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);// 从上下文中获取BeanHelloWorldService helloWorldService = context.getBean(HelloWorldService.class);// 调用Bean的方法helloWorldService.sayHello();// 关闭应用程序上下文context.close();}
}
1.2 Spring MVC

Spring MVC是Spring框架的一个模块,用于开发基于模型-视图-控制器(Model-View-Controller,MVC)架构的Web应用程序。

// 导入必要的包
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class HelloWorldController {@RequestMapping("/hello")@ResponseBodypublic String helloWorld() {return "Hello, World!";}
}
1.3 Spring Boot

Spring Boot是一个用于简化Spring应用程序开发的框架。它提供了自动配置和约定优于配置的方式,使开发者能够快速搭建基于Spring的应用程序。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
1.4 Spring Data

Spring Data模块提供了用于简化数据库访问的工具和方法。它支持各种数据存储技术,包括关系型数据库、NoSQL数据库等。

import org.springframework.data.jpa.repository.JpaRepository;public interface ProductRepository extends JpaRepository<Product, Long> {// 自定义查询方法List<Product> findByCategory(String category);
}
1.5 Spring Security

Spring Security是Spring框架的安全模块,用于提供身份验证、授权和其他安全功能,保护企业级应用程序不受恶意攻击和非法访问。

import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/public/**").permitAll().anyRequest().authenticated().and().formLogin().loginPage("/login").permitAll().and().logout().permitAll();}
}
1.6 Spring WebFlux

Spring WebFlux是Spring框架的响应式编程模块,用于构建异步、非阻塞的Web应用程序。它提供了一种基于反应式流的编程模型,适用于高并发、高吞吐量的场景。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;@RestController
public class ReactiveController {@GetMapping("/hello-reactive")public Mono<String> helloReactive() {return Mono.just("Hello, Reactive!");}
}
1.6.1 Spring WebFlux与Router函数式编程

Spring WebFlux还支持使用Router函数式编程风格定义Web端点,提供更灵活的路由配置。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.ServerResponse;
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;@Configuration
public class RouterConfig {@Beanpublic RouterFunction<ServerResponse> routeFunction() {return route(GET("/hello-functional"), request -> ServerResponse.ok().bodyValue("Hello, Functional!"));}
}
1.7 Spring Cloud

Spring Cloud是Spring框架的一个子项目,用于构建分布式系统的微服务架构。它提供了一系列的工具和组件,简化了微服务架构的开发、部署和管理。

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@EnableEurekaClient
@RestController
public class ServiceController {@GetMapping("/greet")public String greet() {return "Hello from Microservice!";}
}
1.7.1 Spring Cloud Gateway

Spring Cloud Gateway是Spring Cloud的网关组件,用于构建统一的API网关,提供路由、过滤、熔断等功能。

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;public class GatewayConfig {@Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder) {return builder.routes().route("service_route", r -> r.path("/service/**").uri("lb://MICROSERVICE")).build();}
}
1.8 Spring Batch

Spring Batch是Spring框架的批处理模块,用于处理大量数据的批处理任务。它提供了事务管理、并发处理、错误处理等特性。

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class BatchController {@Autowiredprivate JobLauncher jobLauncher;@Autowiredprivate Job job;@GetMapping("/run-batch-job")public String runBatchJob() throws Exception {jobLauncher.run(job, new JobParameters());return "Batch job executed successfully!";}
}
1.9 Spring Integration

Spring Integration是Spring框架的集成模块,用于实现企业集成模式(EIP)的应用程序。它提供了消息通道、消息端点、消息转换器等组件,简化了不同系统间的消息传递和集成任务。

import org.springframework.integration.annotation.Gateway;
import org.springframework.integration.annotation.MessagingGateway;@MessagingGateway
public interface MessageGateway {@Gateway(requestChannel = "inputChannel")void sendMessage(String message);
}
1.9.1 Spring Integration与JMS

Spring Integration与JMS集成示例,通过JMS传递消息。

import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;@Component
public class JmsIntegrationComponent {@JmsListener(destination = "inputQueue")@ServiceActivator(inputChannel = "inputChannel")public void handleMessage(@Payload String message) {// 处理收到的消息}
}
1.10 Spring HATEOAS

Spring HATEOAS是Spring框架的一个模块,用于支持超媒体作为引擎的应用程序状态(HATEOAS)原则。它允许开发者构建遵循RESTful原则的Web服务,提供了在返回资源时包含相关链接的机制。

import org.springframework.hateoas.Link;
import org.springframework.hateoas.server.mvc.ControllerLinkBuilder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class HATEOASController {@GetMapping("/resource")@ResponseBodypublic Resource<String> getResource() {Resource<String> resource = new Resource<>("Hello, HATEOAS");Link link = ControllerLinkBuilder.linkTo(HATEOASController.class).slash("resource").withSelfRel();resource.add(link);return resource;}
}
1.10.1 Spring WebSocket

Spring WebSocket模块提供了在Web应用程序中实现WebSocket通信的支持。通过使用WebSocket,开发者可以实现实时、双向的通信,适用于需要及时更新数据的场景。

import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;@Controller
public class WebSocketController {@MessageMapping("/hello")@SendTo("/topic/greetings")public Greeting greeting(HelloMessage message) throws Exception {Thread.sleep(1000); // 模拟处理时间return new Greeting("Hello, " + message.getName() + "!");}
}
1.11 Spring Social

Spring Social是Spring框架的社交模块,用于简化在应用程序中集成社交网络的功能。它提供了对各种社交网络(如Facebook、Twitter)的连接和交互的支持。

import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;@Controller
public class SocialController {private Facebook facebook;@GetMapping("/profile")public String getProfile(Model model) {User user = facebook.userOperations().getUserProfile();model.addAttribute("user", user);return "profile";}
}
1.11.1 Spring Mobile

Spring Mobile是Spring框架的移动设备支持模块,用于简化在Web应用程序中提供移动设备友好界面的开发。

import org.springframework.mobile.device.Device;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;@Controller
public class MobileController {@GetMapping("/welcome")public String welcomePage(Device device) {if (device.isMobile()) {return "mobile/welcome";} else {return "desktop/welcome";}}
}
1.12 Spring Session

Spring Session是Spring框架的一个模块,用于提供分布式会话管理的支持。它允许开发者将会话信息存储在外部系统中,以实现在集群环境中的会话一致性。

import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;@Configuration
@EnableRedisHttpSession
public class SessionConfig {// 配置信息
}
1.13 Spring Kafka

Spring Kafka是Spring框架的一个模块,用于支持与Apache Kafka集成。它提供了简化的方式来生产和消费Kafka消息。

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;@Component
public class KafkaConsumer {@KafkaListener(topics = "example-topic", groupId = "my-group")public void listen(String message) {// 处理收到的Kafka消息}
}
1.13.1 Spring Batch与Kafka集成

Spring Batch与Kafka集成,通过Kafka读取数据进行批处理。

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;@Component
public class KafkaBatchListener {private final JobLauncher jobLauncher;private final Job job;// 构造函数注入JobLauncher和Job@KafkaListener(topics = "batch-topic", groupId = "batch-group")public void listen(ConsumerRecord<?, ?> record) throws Exception {// 从Kafka消息中获取数据,启动批处理任务jobLauncher.run(job, new JobParameters());}
}
1.14 Spring Boot Actuator

Spring Boot Actuator是Spring Boot的一个模块,用于提供应用程序的生产就绪特性。它通过暴露端点(endpoints)和收集应用程序的运行时信息,帮助监控和管理应用程序。

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;@Component
public class CustomHealthIndicator implements HealthIndicator {@Overridepublic Health health() {// 自定义健康检查逻辑return Health.up().withDetail("message", "Application is running smoothly").build();}
}
1.15 Spring Boot Admin

Spring Boot Admin是一个用于监控Spring Boot应用程序的开源项目。它提供了一个用户界面,展示了应用程序的运行状况、日志、JVM信息等。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.codecentric.boot.admin.server.config.EnableAdminServer;@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {public static void main(String[] args) {SpringApplication.run(AdminServerApplication.class, args);}
}
1.16 Spring Boot Test

Spring Boot Test模块提供了一组用于测试Spring Boot应用程序的工具和注解。它简化了单元测试、集成测试和端到端测试的编写和执行。

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.assertEquals;@SpringBootTest
public class MyServiceTest {@Autowiredprivate MyService myService;@Testpublic void testServiceMethod() {String result = myService.myMethod();assertEquals("Expected Result", result);}
}

2. Jakarta EE (前身是Java EE)

Jakarta EE是Java企业版(Java EE)的后续版本,提供了一套标准的Java平台,用于开发和部署企业级应用程序。以下是Jakarta EE的几个核心模块:

2.1 Servlet API

Servlet API提供了一种用于开发Web应用程序的Java标准。它定义了一组类和接口,用于处理HTTP请求和响应。

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {resp.getWriter().write("Hello, World!");}
}
2.2 JavaServer Faces (JSF)

JavaServer Faces(JSF)是一种用于构建用户界面的JavaWeb框架。它提供了一套组件和标签库,用于简化Web应用程序的开发。

import javax.faces.bean.ManagedBean;@ManagedBean
public class HelloBean {public String getMessage() {return "Hello, World!";}
}
2.3 Enterprise JavaBeans (EJB)

Enterprise JavaBeans(EJB)是一种用于开发分布式应用程序的Java组件模型。它提供了一种简化企业级应用程序开发的方法。

import javax.ejb.Stateless;@Stateless
public class HelloWorldBean {public String sayHello() {return "Hello, World!";}
}
2.4 Java Persistence API (JPA)

Java Persistence API(JPA)是一种用于管理Java应用程序中的数据持久性的标准。它提供了一种简化访问数据库的方法。

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class Product {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private double price;// getters and setters
}
2.5 Java Message Service (JMS)

Java Message Service(JMS)是一种用于实现异步通信的Java API。它定义了一种标准的消息传递模型,用于在应用程序之间发送消息。

import javax.jms.ConnectionFactory;
import javax.jms.JMSContext;
import javax.jms.Queue;public class MessageSender {@Resource(lookup = "jms/ConnectionFactory")private ConnectionFactory connectionFactory;@Resource(lookup = "jms/Queue")private Queue queue;public void sendMessage(String message) {try (JMSContext context = connectionFactory.createContext()) {context.createProducer().send(queue, message);}}
}
2.6 Java Transaction API (JTA)

Java Transaction API(JTA)是一种用于管理分布式事务的Java API。它定义了一套接口和类,用于协调多个资源管理器(如数据库、消息队列等)之间的事务。

import javax.transaction.UserTransaction;public class TransactionExample {private UserTransaction userTransaction;public void performTransaction() {try {userTransaction.begin();// 执行事务操作userTransaction.commit();} catch (Exception e) {try {userTransaction.rollback();} catch (Exception ex) {// 处理回滚异常}}}
}
2.7 Contexts and Dependency Injection (CDI)

Contexts and Dependency Injection(CDI)是一种用于实现依赖注入的Java标准。它提供了一种机制,通过该机制,开发者可以在Java EE应用程序中轻松管理组件之间的依赖关系。

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;@Named
@RequestScoped
public class HelloBean {@Injectprivate GreetingService greetingService;public String getMessage() {return greetingService.greet("World");}
}
2.8 Java API for WebSocket (JSR-356)

Java API for WebSocket是JavaEE标准的一部分,提供了在Java应用程序中实现WebSocket通信的API。

import javax.websocket.OnMessage;
import javax.websocket.server.ServerEndpoint;
import javax.websocket.Session;
import java.io.IOException;@ServerEndpoint("/websocket")
public class WebSocketEndpoint {@OnMessagepublic void onMessage(String message, Session session) throws IOException {session.getBasicRemote().sendText("Received: " + message);}
}
2.9 Batch Applications for the Java Platform (JSR-352)

Batch Applications for the Java Platform是一项JavaEE标准,用于定义和运行批处理作业。

import javax.batch.api.chunk.AbstractItemReader;
import java.io.Serializable;public class MyItemReader extends AbstractItemReader {@Overridepublic void open(Serializable checkpoint) throws Exception {// 初始化读取器}@Overridepublic Object readItem() throws Exception {// 读取数据项return null;}@Overridepublic void close() throws Exception {// 关闭资源}
}
2.10 Java API for JSON Processing (JSON-P)

Java API for JSON Processing(JSON-P)是一种用于处理JSON数据的Java API,用于解析、生成和转换JSON。

import javax.json.Json;
import javax.json.JsonObject;public class JsonExample {public String createJson() {JsonObject jsonObject = Json.createObjectBuilder().add("name", "John Doe").add("age", 30).add("city", "New York").build();return jsonObject.toString();}
}

以上是Jakarta EE的一些核心模块,它们为开发者提供了构建企业级应用程序所需的基础设施和标准。在下一章,我们将深入研究与Jakarta EE紧密相关的持久化框架Hibernate。

3. Hibernate(Java持久层框架)

Hibernate是一个用于简化Java应用程序中数据持久化操作的框架。它提供了对象关系映射(ORM)功能,允许开发者将Java对象映射到数据库表。

3.1 Hibernate核心

Hibernate核心模块提供了核心功能,如对象关系映射、事务管理等。

import org.hibernate.Session;
import org.hibernate.Transaction;public class HibernateExample {public void saveProduct(Product product) {Session session = HibernateUtil.getSessionFactory().openSession();Transaction tx = null;try {tx = session.beginTransaction();session.save(product);tx.commit();} catch (Exception e) {if (tx != null) {tx.rollback();}e.printStackTrace();} finally {session.close();}}
}
3.2 Hibernate验证器

Hibernate验证器模块提供了验证注解和API,用于在持久化对象时执行数据验证。

import javax.validation.constraints.NotBlank;@Entity
public class Product {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@NotBlankprivate String name;// getters and setters
}
3.3 Hibernate搜索

Hibernate搜索模块提供了全文搜索功能,允许开发者在数据库中执行全文搜索操作。

import org.hibernate.search.annotations.Indexed;@Entity
@Indexed
public class Product {// 实体定义
}
3.4 Hibernate审计

Hibernate审计模块提供了审计功能,允许开发者跟踪和记录实体对象的变更历史。

import org.hibernate.envers.Audited;@Entity
@Audited
public class Product {// 实体定义
}
3.5 Hibernate ORM

Hibernate ORM模块提供了完整的对象关系映射功能,允许开发者将Java对象映射到数据库表。

import org.hibernate.Session;
import org.hibernate.query.Query;public class HibernateQueryExample {public List<Product> getProductsByCategory(String category) {try (Session session = HibernateUtil.getSessionFactory().openSession()) {Query<Product> query = session.createQuery("FROM Product WHERE category = :category", Product.class);query.setParameter("category", category);return query.getResultList();} catch (Exception e) {e.printStackTrace();return Collections.emptyList();}}
}
3.6 Hibernate Envers

Hibernate Envers模块是Hibernate的扩展,提供了简单的实体审计功能,记录实体对象的变更历史。

import org.hibernate.envers.AuditReader;
import org.hibernate.envers.AuditReaderFactory;
import org.hibernate.envers.query.AuditEntity;
import java.util.List;public class EnversExample {public List<Product> getRevisions(Long productId) {try {AuditReader auditReader = AuditReaderFactory.get(HibernateUtil.getSessionFactory().getCurrentSession());return auditReader.createQuery().forRevisionsOfEntity(Product.class, false, true).add(AuditEntity.id().eq(productId)).getResultList();} catch (Exception e) {e.printStackTrace();return Collections.emptyList();}}
}
3.7 Hibernate Validator

Hibernate Validator模块是Hibernate的一部分,提供了用于数据验证的功能,可以在实体类上添加验证注解。

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Positive;@Entity
public class Product {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@NotBlankprivate String name;@Positiveprivate double price;// getters and setters
}
3.8 Hibernate OGM

Hibernate OGM模块扩展了Hibernate,提供了对NoSQL数据库的支持,允许使用Hibernate的API与NoSQL数据库交互。

import org.hibernate.ogm.datastore.mongodb.MongoDB;
import org.hibernate.ogm.datastore.mongodb.impl.MongoDBConfiguration;
import org.hibernate.ogm.session.impl.OgmSessionFactoryImpl;public class HibernateOGMExample {public void saveDocument(Document document) {MongoDBConfiguration configuration = new MongoDBConfiguration().addProperty("hibernate.ogm.datastore.provider", "mongodb").addProperty("hibernate.ogm.datastore.database", "myDatabase").addProperty("hibernate.ogm.datastore.host", "localhost").addProperty("hibernate.ogm.datastore.port", "27017");OgmSessionFactoryImpl sessionFactory = (OgmSessionFactoryImpl) configuration.buildSessionFactory();try (OgmSession session = sessionFactory.openSession()) {session.persist(document);}}
}
3.9 Hibernate Reactive

Hibernate Reactive模块是Hibernate的一部分,提供了对响应式编程的支持,使得在响应式环境中使用Hibernate更为便捷。

import org.hibernate.reactive.mutiny.Mutiny;public class HibernateReactiveExample {public Uni<Product> getProductById(Long productId) {Mutiny.SessionFactory sessionFactory = Mutiny.SessionFactory.newInstance("hibernate.cfg.xml");return sessionFactory.withTransaction((session, tx) ->session.find(Product.class, productId));}
}

以上是Hibernate框架的一些核心模块和扩展模块,为开发者提供了强大的数据持久化和数据库交互功能。在下一章,我们将继续深入研究Java企业级开发中的其他关键库和框架。

4. Apache Struts

Apache Struts是一个基于Java的Web应用程序框架,用于开发MVC架构的Web应用程序。

4.1 Struts核心

Struts核心模块提供了MVC架构的基本功能,包括控制器、视图和模型。

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class HelloWorldAction extends Action {public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {return mapping.findForward("success");}
}
4.2 Struts标签库

Struts标签库提供了一组自定义标签,用于简化开发者在JSP页面中的编码工作。

<%@ taglib prefix="s" uri="/struts-tags" %>
<html><head><title>Hello World</title></head><body><s:property value="message" /></body>
</html>
4.3 Struts验证器

Struts验证器模块提供了一组验证规则和验证器,用于验证表单数据的有效性。

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionValidator;
import javax.servlet.http.HttpServletRequest;public class LoginFormValidator extends ActionValidator {public ActionErrors validate(ActionForm form, HttpServletRequest request) {ActionErrors errors = new ActionErrors();LoginForm loginForm = (LoginForm) form;if (loginForm.getUsername() == null || loginForm.getUsername().length() < 1) {errors.add("username", new ActionMessage("error.username.required"));}if (loginForm.getPassword() == null || loginForm.getPassword().length() < 1) {errors.add("password", new ActionMessage("error.password.required"));}return errors;}
}
4.4 Struts Tiles

Struts Tiles模块提供了一种模板布局的方式,允许开发者将Web应用程序分成多个可重用的部分。

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE html>
<html>
<head><title>Title</title>
</head>
<body><tiles:insertAttribute name="header" /><tiles:insertAttribute name="content" /><tiles:insertAttribute name="footer" />
</body>
</html>
4.5 Struts 2

Struts 2是Struts框架的下一代,提供了更灵活、简洁的MVC架构,并支持标签驱动的页面开发。

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head><title>Hello World</title>
</head>
<body><h2>Hello World - Struts 2</h2><s:property value="message" />
</body>
</html>
4.6 Struts REST Plugin

Struts REST插件扩展了Struts框架,支持RESTful风格的Web服务开发。

<struts><constant name="struts.rest.namespace" value="/api" /><constant name="struts.action.extension" value="json" /><package name="api" extends="rest-default"><action name="user" class="com.example.UserAction"><result type="json" /></action></package>
</struts>
4.7 Struts JSON Plugin

Struts JSON插件提供了支持JSON数据格式的功能,方便在Struts应用程序中处理和返回JSON数据。

<struts><package name="json" extends="json-default"><action name="getUsers" class="com.example.UserAction"><result type="json" /></action></package>
</struts>
4.8 Struts Spring Plugin

Struts Spring插件整合了Spring框架,允许在Struts应用程序中使用Spring的依赖注入和其他功能。

<struts><constant name="struts.objectFactory" value="spring" /><!-- other configurations -->
</struts>

以上是Apache Struts框架的一些核心模块和插件,为开发者提供了构建Web应用程序的强大工具。在下一章,我们将深入研究Java企业级开发中的其他关键库和框架。

5. Apache MyBatis

Apache MyBatis是一个持久层框架,用于简化数据库访问操作。它允许开发者将SQL语句与Java方法进行映射,从而实现对象关系映射(ORM)。

5.1 MyBatis核心

MyBatis核心模块提供了持久化操作的基本功能,包括SQL映射、事务管理等。

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;public class MyBatisUtil
{private static SqlSessionFactory sqlSessionFactory;static {String resource = "mybatis-config.xml";try (InputStream inputStream = Resources.getResourceAsStream(resource)) {sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}public static SqlSessionFactory getSqlSessionFactory() {return sqlSessionFactory;}
}
5.2 MyBatis与Spring集成

MyBatis与Spring集成模块提供了将MyBatis与Spring框架无缝集成的功能,简化了在Spring应用中使用MyBatis的配置过程。

import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;@Configuration
public class MyBatisConfig {@Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);return sessionFactory;}
}
5.3 MyBatis生成器

MyBatis生成器模块提供了一种简化数据库表与Java对象映射的方式,通过生成代码减少手动编写。

public class MyBatisGeneratorExample {public static void main(String[] args) throws Exception {List<String> warnings = new ArrayList<>();boolean overwrite = true;File configFile = new File("mybatis-generator.xml");ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(configFile);DefaultShellCallback callback = new DefaultShellCallback(overwrite);MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);myBatisGenerator.generate(null);}
}
5.4 MyBatis动态SQL

MyBatis动态SQL模块允许开发者在SQL映射文件中使用动态语句,根据条件生成不同的SQL语句。

<select id="selectByCondition" resultType="Product">SELECT * FROM product<where><if test="name != null and name != ''">AND name = #{name}</if><if test="category != null and category != ''">AND category = #{category}</if></where>
</select>
5.5 MyBatis插件

MyBatis插件模块允许开发者编写自定义插件,扩展和定制MyBatis的行为。

@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})
})
public class MyInterceptor implements Interceptor {@Overridepublic Object intercept(Invocation invocation) throws Throwable {// 执行前的逻辑Object result = invocation.proceed();// 执行后的逻辑return result;}@Overridepublic Object plugin(Object target) {return Plugin.wrap(target, this);}@Overridepublic void setProperties(Properties properties) {// 配置插件属性}
}
5.6 MyBatis缓存

MyBatis缓存模块允许开发者配置和使用一级缓存和二级缓存,提高查询性能。

<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
5.7 MyBatis Spring Boot Starter

MyBatis Spring Boot Starter是一个用于在Spring Boot应用中集成MyBatis的起始器。

dependencies {implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
}

以上是Apache MyBatis框架的一些核心模块和扩展模块,为开发者提供了简单而强大的数据库访问功能。在下一章,我们将深入研究Java企业级开发中的其他关键库和框架。

6. Apache Camel

Apache Camel是一个开源的集成框架,用于简化系统之间的消息传递、文件传输等集成任务。

6.1 Camel核心

Camel核心模块提供了集成框架的基本功能,包括路由、转换器等。

import org.apache.camel.builder.RouteBuilder;public class MyRouteBuilder extends RouteBuilder {@Overridepublic void configure() throws Exception {from("file:input?noop=true").to("file:output");}
}
6.2 Camel与Spring Boot集成

Camel与Spring Boot集成模块简化了在Spring Boot应用中使用Camel的配置和使用。

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class CamelConfig {@Beanpublic RouteBuilder myRoute() {return new MyRouteBuilder();}
}
6.3 Camel组件

Camel组件模块提供了各种用于连接不同系统的组件,如HTTP、JMS、FTP等。

import org.apache.camel.builder.RouteBuilder;public class HttpRouteBuilder extends RouteBuilder {@Overridepublic void configure() throws Exception {from("jetty:http://localhost:8080/myService").to("log:output");}
}
6.4 Camel路由

Camel路由模块允许开发者定义复杂的消息路由和处理逻辑,使系统间的通信变得更加灵活。

import org.apache.camel.builder.RouteBuilder;public class MyRouteBuilder extends RouteBuilder {@Overridepublic void configure() throws Exception {from("direct:start").to("log:output");}
}
6.5 Camel转换器

Camel转换器模块提供了各种转换器,用于在路由过程中对消息进行格式转换和处理。

import org.apache.camel.builder.RouteBuilder;public class TransformRouteBuilder extends RouteBuilder {@Overridepublic void configure() throws Exception {from("direct:start").transform().body(String.class, s -> s.toUpperCase()).to("log:output");}
}
6.6 Camel企业集成模式

Camel企业集成模式模块提供了一组常见的企业集成模式,如消息路由、消息过滤、消息转换等。

import org.apache.camel.builder.RouteBuilder;public class EIPRouteBuilder extends RouteBuilder {@Overridepublic void configure() throws Exception {from("direct:start").filter().xpath("/order[@amount > 1000]").to("jms:queue:bigOrders");}
}
6.7 Camel Spring Boot Starter

Camel Spring Boot Starter是一个用于在Spring Boot应用中集成Camel的起始器。

dependencies {implementation 'org.apache.camel.springboot:camel-spring-boot-starter:3.13.0'
}

总结

通过本文的深度探索,读者将对Java企业级开发中的关键框架和库有全面的认识。每个章节提供了详细的介绍和实际的Java示例代码,使读者能够更加自信地应用这些工具构建高效、可靠的企业级应用程序。无论是初学者还是经验丰富的开发人员,都能在本文中找到有价值的信息和实用的技能。

这篇关于【Java万花筒】Java框架全家福:企业级开发精华剖析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684379

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory