各种框架依赖或jar包的汇总及其作用(待补充)------后端

后端

1、Spring家族

(1)SpringMVC

作用: SpringMVC框架是web层框架,主要是简化web层(表现层)开发

    <!--springmvc依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.8.RELEASE</version>
    </dependency>
(2)SpringIOC

IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。原本由开发者自己管理对象的权利,现在将这个控制权利交给IOC容器进行创建对象,封装数据,和管理对象之间的依赖,这就是控制反转。
IOC主要应用于业务层。

<!--spring框架-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.8.RELEASE</version>
</dependency>

SpringMVC中的jar包已经包含spring-context

(3)SpringAOP

AOP (Aspect Oriented Programming) 即面向切面编程

作用: 在不修改源码的情况下,可以对目标对象的方法进行增强

<!--aop: spring整合第三方的面向切面编程组件-->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.8.7</version>
</dependency>

(4)CGLIB

CGLIB普通类动态代理,生成继承类。

maven

 <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.1.8.RELEASE</version>
</dependency>

在这里插入图片描述

(5)JDBCTemplate

JdbcTemplate是Spring提供的一个模板类,它是对jdbc的封装。用于支持持久层的操作

        <!--mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <!--spring-jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.8.RELEASE</version>
        </dependency>

        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>
    </dependencies>
(6)fileUpload(SpringMVC文件上传)

springMVC文件上传,就是用到了Apache的文件fileUpload上传组件实现。简化了上传文件的过程。

<!--添加Apache文件上传支持包-->
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.1</version>
</dependency>
(7)SpringMVCjosn数据的自动转换

@Requestbosdy和@Responsebody,需要导入jackson

<!--添加jackson支持包: springMVC框架操作json数据时调用的技术-->
<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
</dependency>
(8)Spring整合junit 包
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version> <!--spring框架对junit有要求,junit必须使用4.12及以上版本-->
    <scope>test</scope>
</dependency>
<!--
        spring整合junit包:spring-test
          注意:使用这个整个包,要求依赖的junit的包必须是4.12及版本以上
        -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.1.8.RELEASE</version>
</dependency>
(9)spring整合redis

解决当String类型的值是对象时候无法储存的问题

maven

  <!-- ================  spring   整合  Redis================== -->
        <!-- 1、java连接Redis的jar包,也就是使用jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.3</version>
        </dependency>

        <!-- 2、spring整合Redis的jar包,注意版本的对应关系 -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>

        <!--jackson-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <!-- 日志记录 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.21</version>
        </dependency>

2、Tomcat插件

作用: 开启tomcat服务器

   <!--插件配置-->
  <build>
    <plugins>
      <!--tomcat7的插件-->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>8080</port>
          <path>/</path>
          <uriEncoding>UTF-8</uriEncoding>
          <server>tomcat7</server>
        </configuration>
      </plugin>
    </plugins>
  </build>

3、Servlet

作用: 在于交互式地浏览和修改数据,生成动态Web内容。


<!--版本3之后才能使用注解servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

4、Beanutils

封装实体类

maven

<!-- commons-beanutils -->
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version>
</dependency>

5、jackson

JavaScript Object Notation js对象标记
是一种轻量级的数据交换格式,通过json可以实现前后端传输数据

jackson主要用于json数据与java对象的转换

在这里插入图片描述

<!--添加jackson支持包: springMVC框架操作json数据时调用的技术-->
<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
</dependency>

6、Junit

作用: 测试代码。
注意: spring框架对junit有要求,junit必须使用4.12及以上版本

        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version> <!--spring框架对junit有要求,junit必须使用4.12及以上版本-->
            <scope>test</scope>
        </dependency>

7、Mybatis

    <!--mybatis-->  
    <dependency> 
      <groupId>org.mybatis</groupId>  
      <artifactId>mybatis</artifactId>  
      <version>3.5.1</version> 
    </dependency>  

8、commons-io

作用: 简化文件流的传输

IOUtils.copy(inputStream,response.getOutputStream());
<!--apache的commons-io: 文件下载操作流使用-->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

9、log4j日志包

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.4</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>

10、Jedis

简易版操作redis的java客户端

jar包

在这里插入图片描述

maven

<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>2.9.0</version>
</dependency>

11、Mysql

mysql连接驱动包,注意版本5和版本8的配置文件有所不同

5.xx版本

  <!--mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/springdb?characterEncoding=utf8
jdbc.username = root
jdbc.password = root
jdbc.initialSize = 3
jdbc.maxActive = 50
jdbc.minIdle = 3
jdbc.maxWait = 6000

8.xx版本之后

    <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
   </dependency>
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springdb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF8
jdbc.username=root
jdbc.password=root

其中Timezone这个参数必加,这是个时区设置,也能理解,这样设置最起码数据库取时间能取到北京时间了

12、lombok

由于lombok是在.class文件的时候使用的,所以idea需要装插件lombok
1、 @Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
2、@NoArgsConstructor无参的构造器
3、@AllArgsConstructor全参的构造器

maven

 <dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.16.18</version>
	<scope>provided</scope>
</dependency>

13、commons-lang3

随机生成字符串。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.5</version>
</dependency>
  //1. 调用工具类随机生成4个数字
   String authCode = RandomStringUtils.randomNumeric(4);

14、阿里云短信包

发送短信。

maven

        <!-- 阿里云短信包 -->
<dependency>
     <groupId>com.aliyun</groupId>
     <artifactId>aliyun-java-sdk-core</artifactId>
     <version>4.5.3</version>
</dependency>
<dependency>
     <groupId>com.aliyun</groupId>
     <artifactId>aliyun-java-sdk-sms</artifactId>
     <version>3.0.0-rc1</version>
</dependency>

工具类

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Map;

/**
 * 发送短信息的工具类
 */
public class SmsUtils {

    //这里要换成在阿里云申请的:accessKeyId和secret
    private static String accessKeyId = "换成你的accessKeyId";
    private static String secret = "换成你的secret";

    /**
     * 发送短信的方法
     * @param phoneNumbers 11位电话号码,格式:15900000000
     * @param signName 签名名称
     * @param templateCode 模板CODE
     * @param authCode 要发的验证码
     * @return 返回的信息字符串
     */
    public static String send(String phoneNumbers, String signName, String templateCode, String authCode) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, secret);
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("RegionId", "cn-hangzhou");
        request.putQueryParameter("PhoneNumbers", phoneNumbers);
        request.putQueryParameter("SignName", signName);
        request.putQueryParameter("TemplateCode", templateCode);
        request.putQueryParameter("TemplateParam", "{\"code\":\"" + authCode + "\"}");

        String code = null; //返回的字符串
        try {
            //得到返回的响应对象
            CommonResponse commonResponse = client.getCommonResponse(request);
            //得到返回的JSON字符串
            //{"Message":"OK","RequestId":"E3C3BE8F-2294-4541-A3F3-A98A29BB6F55","BizId":"375420194646745909^0","Code":"OK"}
            String json = commonResponse.getData();

            //返回的JSON字符串转成Map对象
            ObjectMapper mapper = new ObjectMapper();
            Map map = mapper.readValue(json, Map.class);
            System.out.println(map);
            //获取键为Message的值
            code = (String) map.get("Code");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return code;
    }

    public static void main(String[] args) {
        String code = SmsUtils.send("换成你的电话", "签名", "模板", "验证码");
        System.out.println(code);
    }
}

15、pagehelp

分页,自动生成PageInfo实体类

maven

<!-- 引入mybatis的 pagehelper 分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version>
</dependency>

16、wxpay微信支付

maven

<!-- 微信支付 -->
<dependency>
    <groupId>com.github.wxpay</groupId>
    <artifactId>wxpay-sdk</artifactId>
    <version>3.0.9</version>
</dependency>

PayUtils

/**
 * 微信支付工具类
 */
public class PayUtils {

    private static WXPay wxPay;

    // 支付成功回调地址
    private static String notifyUrl = "http://换成你的外网地址/payNotify";

    // 初始化微信支付
    static {
        try {
            PayConfig payConfig = new PayConfig();
            payConfig.setAppID("公众账号ID"); // 公众账号ID
            payConfig.setMchID("商户号");   // 商户号
            payConfig.setKey("生成签名的密钥"); // 生成签名的密钥
            wxPay = new WXPay(payConfig);
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
    }

	/**
	 * 生成微信订单支付URL
	 * @param orderId 订单的ID
	 * @param totalPay 支付金额
	 * @return 生成的URL
	 */
	public static String createOrder(String orderId, Integer totalPay) {
        Map<String, String> data = new HashMap<>();
        // 商品描述
        data.put("body", "xxx支付中心-商品支付");
        // 订单号
        data.put("out_trade_no", orderId);
        //金额,单位是分
        data.put("total_fee", totalPay.toString());
        //调用微信支付的终端IP
        data.put("spbill_create_ip", "127.0.0.1");
        //回调地址
        data.put("notify_url", notifyUrl);
        // 支付有效时间10分钟
        Date now = new Date();
        Date now_10 = new Date(now.getTime() + 600000); //10分钟后的时间
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");//可以方便地修改日期格式
        String nowTime_10 = dateFormat.format(now_10);
        data.put("time_expire", nowTime_10);
        // 交易类型为扫码支付
        data.put("trade_type", "NATIVE");

        // 利用wxPay工具,完成下单
        Map<String, String> result = null;
        try {
            result = wxPay.unifiedOrder(data);
        } catch (Exception e) {
            throw new RuntimeException("微信下单失败", e);
        }
        // 校验业务状态
        checkResultCode(result);

        // 下单成功,获取支付链接
        String url = result.get("code_url");
        if (StringUtils.isBlank(url)) {
            throw new RuntimeException("微信下单失败,支付链接为空");
        }
        return url;
    }

	/**
	 * 检查业务状态
	 * @param result
	 */
	public static void checkResultCode(Map<String, String> result) {
        String resultCode = result.get("result_code");
        if ("FAIL".equals(resultCode)) {
            throw new RuntimeException("【微信支付】微信支付业务失败");
        }
    }

}

18、jackson-xml的转换

javkson和xml之间的转换,主要用于wxpay。

微信返回xml的数据,后端进行解析。
后端也得向微信传输xml格式的数据。

maven

    <!--jackson xml的转换工具 -->  
    <dependency> 
      <groupId>com.fasterxml.jackson.dataformat</groupId>  
      <artifactId>jackson-dataformat-xml</artifactId>  
      <version>2.9.9</version> 
    </dependency>  

19、zookeeper

注意事项:如果出现zookeeper not connected主要是jdk版本和zookeeper版本不匹配,jdk1.8以后,pom中zookeeper依赖不能超过3.4+,不然就会报错。此外3.3+的版本依赖包阿里云中没有,所以建议使用3.4+版本的。

        <!-- zookeeper的api管理依赖 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.2.0</version>
        </dependency>
        
        <!-- zookeeper依赖 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>

20、commons-codec

密码加密工具类

   <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
 user.setPassword(DigestUtils.md5Hex("123456"));  // md5加密

21、日期处理包

DateTime类被final修饰,是不可变类,能够保证线程安全。

maven

        <!-- 日期处理包 -->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>
new DateTime(System.currentTimeMillis()).toString("yyyy年MM月dd日 HH:mm")
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

halulu.me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值