SpringBoot系列0-开始

 

1.spring-boot-starter-parent

   spring推荐我们按照下面的方式使用spring-boot-starter-parent,这个父Pom的作用是提供常用jar包版本控制的。打开源文件可以惊奇得发现,spring-boot-starter-parent的parent是 spring-boot-dependencies,spring-boot-dependencies的作用我们马上会说。

        <parent> 
		<groupId> org.springframework.boot </ groupId> 
		<artifactId> spring-boot-starter-parent </ artifactId> 
		<version> 2.0.0.BUILD- SNAPSHOT </ version> 
	</ parent>   

  但是在实际过程中我们一般使用自己公司的parent,如何解决这个问题呢?如下,在项目主POM中<dependencyManagement>节点下面定义。

<dependencyManagement>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>1.4.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
  </dependency>
</dependencyManagement>

需要注意spring-boot-dependencies只能在dependencyManagement中声明,而不能在子模块中出现,因为spring-boot-dependencies中没有声明引入任何jar包,只是一个pom配置,打开maven仓库可以看到,它里面定义了很多依赖声明。

 如果想在项目中使用spring-boot-dependencies中的jar包,但是不用默认版本,需要在dependencyManagement中指定版本,并且需要在spring-boot-dependencies之前。

2.starters


startrts(启动器)是里面包含了一系列依赖描述,方便你在项目中使用。比如

if you want to getstarted using Spring and JPA for database access, just include the spring-boot-starter-data-jpa dependency in your project, and you are good to go.

官方启动器一般是spring-boot-starter-*

第三方启动器命名一般是*-spring-boot-starter

下面是一些常用的Starters.

名称描述

spring-boot-starter

核心入门者,包括自动配置支持,日志记录和YAML

spring-boot-starter-activemq

使用Apache ActiveMQ启动JMS消息传递

spring-boot-starter-amqp

使用Spring AMQP和Rabbit MQ的入门者

spring-boot-starter-aop

使用Spring AOP和AspectJ进行面向方面编程的入门者

spring-boot-starter-artemis

使用Apache Artemis开始JMS消息传递

spring-boot-starter-batch

使用Spring Batch的入门者

spring-boot-starter-cache

Starter使用Spring Framework的缓存支持

spring-boot-starter-cloud-connectors

Starter使用Spring Cloud Connectors,可简化Cloud Foundry和Heroku等云平台中的服务连接

spring-boot-starter-data-cassandra

入门使用Cassandra分布式数据库和Spring Data Cassandra

spring-boot-starter-data-cassandra-reactive

使用Cassandra分布式数据库和Spring Data Cassandra Reactive的初学者

spring-boot-starter-data-couchbase

使用Couchbase面向文档的数据库和Spring Data Couchbase的初学者

spring-boot-starter-data-couchbase-reactive

初级用于使用Couchbase面向文档的数据库和Spring Data Couchbase Reactive

spring-boot-starter-data-elasticsearch

使用Elasticsearch搜索和分析引擎和Spring Data Elasticsearch的入门者

spring-boot-starter-data-jpa

使用Spring数据JPA与Hibernate的入门者

spring-boot-starter-data-ldap

使用Spring Data LDAP的入门者

spring-boot-starter-data-mongodb

入门使用MongoDB面向文档的数据库和Spring Data MongoDB

spring-boot-starter-data-mongodb-reactive

入门使用MongoDB面向文档的数据库和Spring Data MongoDB Reactive

spring-boot-starter-data-neo4j

初学者使用Neo4j图形数据库和Spring Data Neo4j

spring-boot-starter-data-redis

使用Spring Data Redis和Lettuce客户端使用Redis键值数据存储的入门者

spring-boot-starter-data-redis-reactive

初学者使用Redis键值数据存储以及Spring Data Redis反应器和Lettuce客户端

spring-boot-starter-data-rest

Starter使用Spring Data REST通过REST公开Spring Data存储库

spring-boot-starter-data-solr

启动Spring Data Solr使用Apache Solr搜索平台

spring-boot-starter-freemarker

使用FreeMarker视图构建MVC Web应用程序的入门者

spring-boot-starter-groovy-templates

使用Groovy模板视图构建MVC Web应用程序的入门者

spring-boot-starter-hateoas

使用Spring MVC和Spring HATEOAS构建基于超媒体的RESTful Web应用程序的入门者

spring-boot-starter-integration

使用Spring Integration的入门者

spring-boot-starter-jdbc

将JDBC与Tomcat JDBC连接池配合使用的初学者

spring-boot-starter-jersey

使用JAX-RS和Jersey构建RESTful Web应用程序的入门者。替代方案spring-boot-starter-web

spring-boot-starter-jooq

使用jOOQ访问SQL数据库的入门者。替代spring-boot-starter-data-jpaspring-boot-starter-jdbc

spring-boot-starter-json

用于阅读和编写json的初学者

spring-boot-starter-jta-atomikos

使用Atomikos启动JTA交易

spring-boot-starter-jta-bitronix

使用Bitronix启动JTA交易

spring-boot-starter-jta-narayana

春季启动Narayana JTA初学者

spring-boot-starter-mail

Starter使用Java Mail和Spring Framework的电子邮件发送支持

spring-boot-starter-mustache

使用Mustache视图构建Web应用程序的入门者

spring-boot-starter-quartz

春季启动石英起动器

spring-boot-starter-security

Starter使用Spring Security

spring-boot-starter-test

Starter用于测试包含JUnit,Hamcrest和Mockito等库的Spring Boot应用程序

spring-boot-starter-thymeleaf

使用Thymeleaf视图构建MVC Web应用程序的入门者

spring-boot-starter-validation

通过Hibernate Validator使用Java Bean验证的入门者

spring-boot-starter-web

使用Spring MVC构建Web的初学者,包括RESTful应用程序。使用Tomcat作为默认的嵌入容器

spring-boot-starter-web-services

使用Spring Web Services的入门者

spring-boot-starter-webflux

使用Spring Framework的Reactive Web支持构建WebFlux应用程序的入门者

spring-boot-starter-websocket

使用Spring Framework的WebSocket支持构建WebSocket应用程序的入门者


3.Auto-configuration

如在添加了jar包,并且没有手动配置相关的bean,spring boot会自动配置到spring应用程序中。

您需要选择加入@EnableAutoConfiguration或 @SpringBootApplication注释到您的某个@Configuration类来自动配置。


4.spirngbean和依赖注入

如果是将application class放在工程的根目录,只需要在main class上添加注解@ComponentScan,并且不需要任何参数。那么在项目中所有的组件【@Component, @Service, @Repository, @Controller】都会自动注册为spring bean.


5.用@SpringBootApplication简化注解

  @SpringBootApplication等价于@Configuration,@EnableAutoConfiguration和@ComponentScan三者之和。










### 回答1: Spring Boot是一个Java开发框架,可以帮助我们快速搭建和开发Java应用程序。而Jnetpcap是一个Java语言封装的抓包工具库,可以用于抓取网络数据包。 在Spring Boot中使用Jnetpcap进行抓包格式化,可以按照以下步骤进行: 1. 首先,在Spring Boot项目中引入Jnetpcap的依赖。可以在项目的pom.xml文件中添加以下代码: ``` <dependency> <groupId>org.jnetpcap</groupId> <artifactId>jnetpcap</artifactId> <version>1.4.r1425-1</version> </dependency> ``` 2. 创建一个PacketHandler类,用于处理抓到的每个网络数据包。可以在该类中实现Jnetpcap提供的PacketHandler接口,并重写其回调方法。在回调方法中可以对数据包进行格式化处理,提取需要的信息。例如: ```java public class MyPacketHandler implements PacketHandler { public void nextPacket(PcapPacket packet, Object user) { // 对数据包进行格式化处理,并提取需要的信息 // 在这里可以使用Jnetpcap提供的方法,如packet.getPacketWirelen()获取原始数据包的长度 } } ``` 3. 在Spring Boot应用程序中使用Jnetpcap开始抓包。可以在需要抓包的地方,如Controller层的某个方法中添加以下代码: ```java // 创建一个Pcap对象,用于抓包 Pcap pcap = Pcap.openLive(device.getName(), snaplen, flags, timeout, errbuf); // 创建一个PacketHandler对象,用于处理抓到的每个网络数据包 PacketHandler packetHandler = new MyPacketHandler(); // 开始抓包,抓到的数据包将会被传递给PacketHandler进行处理 pcap.loop(count, packetHandler, null); // 抓包结束后需要释放资源 pcap.close(); ``` 通过以上步骤,在Spring Boot项目中就可以使用Jnetpcap进行抓包格式化了。我们可以在PacketHandler中实现自定义的格式化逻辑,提取需要的信息并进行相应的处理。这样就可以方便地对抓到的网络数据进行分析和使用。 ### 回答2: Spring Boot是一个用于构建微服务的开源框架,它简化了Java应用程序的开发过程,并提供了一种快速、高效、灵活的方式来创建、部署和管理应用程序。它还集成了许多其他流行的开源项目,使开发人员能够更轻松地实现各种功能。 Jnetpcap是一个用于Java的抓包库,它能够捕获和分析网络数据包,并提供了一系列强大的API来处理这些数据包。它支持各种协议和格式,包括以太网、IP、TCP、UDP等。使用Jnetpcap,开发人员可以轻松地编写代码来捕获、解析和格式化网络数据包。 在Spring Boot项目中使用Jnetpcap进行抓包格式化是一种很常见的做法,它可以帮助开发人员实时监控和分析网络流量。开发人员可以使用Jnetpcap提供的API来捕获特定类型的数据包,并根据自己的需求进行格式化处理。 首先,开发人员可以使用Jnetpcap的捕获功能来监听网络接口,以捕获特定协议或端口的数据包。然后,他们可以使用Jnetpcap的解析功能来解析这些数据包,获取各种字段和属性的值。 接下来,开发人员可以根据自己的需求来格式化这些数据包。他们可以将数据包的各个字段和属性的值打印出来,也可以将它们存储到数据库中,或者通过网络发送给其他系统进行进一步处理。开发人员可以根据自己的需求和项目的要求进行定制化的格式化处理。 总之,Spring Boot与Jnetpcap的结合可以帮助开发人员快速实现抓包和格式化功能,为网络流量分析和监控提供了一种高效、灵活的解决方案。开发人员可以根据自己的需求使用Jnetpcap提供的各种API,并结合Spring Boot的特性来进行开发。 ### 回答3: Spring Boot是一个基于Java的开发框架,专门用于快速创建和部署独立的、可扩展的、功能完备的企业级应用程序。而JNetPcap是一个用于在Java程序中进行网络数据包捕获和分析的开源库。 通过使用Spring Boot和JNetPcap结合,我们可以方便地对网络数据包进行抓包和格式化处理。以下是一个简单的示例: 首先,在Spring Boot项目的依赖管理中添加JNetPcap库的引用。在pom.xml文件中添加如下代码片段: ``` <dependency> <groupId>org.jnetpcap</groupId> <artifactId>jnetpcap</artifactId> <version>1.4.1</version> </dependency> ``` 然后,我们可以在Spring Boot应用程序的某个Controller或Service中编写代码来实现抓包和格式化。 ```java import org.jnetpcap.packet.PcapPacket; import org.jnetpcap.protocol.tcpip.Http; @RequestMapping("/capture") @RestController public class PacketCaptureController { @GetMapping public String capturePackets() { StringBuilder result = new StringBuilder(); StringBuilder errbuf = new StringBuilder(); // 打开网络设备 Pcap pcap = Pcap.openLive("eth0", 65536, Pcap.MODE_PROMISCUOUS, 1000, errbuf); if (pcap == null) { return "Error opening device: " + errbuf.toString(); } // 创建Http协议解析器 Http http = new Http(); // 抓包 PcapPacket packet = new PcapPacket(); while (pcap.nextEx(packet) == Pcap.NEXT_EX_OK) { if (packet.hasHeader(http)) { result.append(http.toString()); } } // 关闭网络设备 pcap.close(); return result.toString(); } } ``` 上述代码会打开名为"eth0"的网络设备,并利用Http协议解析器解析每一个捕获到的数据包,将其格式化为字符串并返回。 总结来说,借助Spring Boot和JNetPcap,我们可以很容易地进行网络数据包的抓包和格式化处理。以上提供的示例代码可以作为一个基础,根据具体需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值