
Spring基础
文章平均质量分 54
孙LL
这个作者很懒,什么都没留下…
展开
-
Config分布式配置中心
首先,我们的这个配置是放在Github上面的远程配置然后把这个空仓库拉下来拉下来的代码非常简单,找到个文件夹,然后 git clone [url]warning不用管然后你劈里啪啦一顿操作,在本地写出了个配置文件:接着我们想要把这个配置文件上传上去。上传的代码也不难,简单解释下//设置我们要上传的远程仓库地址git remote add origin https://github.com/SunEnjoy/JustARep.git//如果origin已经被占用,可以使用这个命令(如果原创 2021-06-22 17:02:14 · 91 阅读 · 0 评论 -
Gateway网关
由于微服务的存在,有时候一个请求可以变的很复杂,比如我有一个请求需要查询商品的详情,但是详情包括了价格,数量,评论这三个微服务,那么就要通过三次认证-请求,我们才能获得商品的信息。而同时客户端也需要维护着所有这些微服务的地址,所以为了简化这些请求,那么就出现了Gateway,网关。如何使用网关(静态路由):第一步,导入坐标: <dependencies> <dependency> <groupId>org.spring原创 2021-06-21 16:11:51 · 118 阅读 · 0 评论 -
Hystrix熔断器
先来了解一个概念:雪崩就是一条长链路中,其中某个服务失败了,导致整个链路都失效了。Hystrix熔断器就是为了防止这种情况出现而诞生的。隔离线程池隔离:如果没有线程池隔离(不存在线程池BCD),只有一个线程池A,那么如果C服务挂了,所有的线程池里的线程都进入到了C,可是由于C服务挂了,根本不会把线程还回来啊,所以就会导致线程池根本没线程了,进而也都无法调用BD服务了,这就出现了雪崩。而这时候我们使用线程池隔离,为每个服务都开设属于他们的线程池,那么ThreadPool-C因为服务C挂了之后,最多原创 2021-06-21 14:19:18 · 76 阅读 · 0 评论 -
Feign声明式服务调用
第一步,导入坐标:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>第二步,在启动类打开Feign的功能@EnableDiscoveryClient // 激活DiscoveryClient@EnableEur原创 2021-06-21 10:58:26 · 93 阅读 · 0 评论 -
Ribbon负载均衡策略及代码实现
Ribbon负载均衡这里简单的写一下负载均衡的几种策略:随机:就是随便选一个给你服务轮询:就是按顺序依次在一个集群给你提供服务最大并发:你自己问问Eureka服务器,哪个最闲,你就用哪个响应时间:给所有的集群服务都发一个非常小的数据包,谁最先响应就调用谁。过滤:给你过滤掉那些已经坏掉的节点或者响应慢的节点,然后从剩下的节点从挑一个给你然后这个实现也不难:1.定义一个配置类,里面实现IRule接口@Configurationpublic class MyRule { @Bean原创 2021-06-20 16:44:02 · 155 阅读 · 0 评论 -
Ribbon客户端负载均衡入门
Ribbon首先要先搞清楚客户端负载均衡和服务端负载均衡的差异。Ribbon其实就两个功能,一个是客户端的负载均衡另一个就是简化了远程调用。那么具体要怎么使用呢?其实也很简单,就两步:1.使用@LoadBalanced来修饰RestTemplate@Configurationpublic class RestTemplateConfig { @Bean @LoadBalanced//使用Ribbon必备的注解 public RestTemplate getRestTemp原创 2021-06-20 16:06:39 · 105 阅读 · 0 评论 -
SpringCloud高可用---集群搭建
高可用其实就是 集群,一个坏了另一个顶上的概念他的实现也是很简单的:1.准备两个Server,两个Server相互注册即可Server1注册到Server2上server: port: 8762eureka: instance: hostname: eureka-clusterServer1 # 主机名 client: service-url: defaultZone: http://eureka-clusterServer2:8762/eureka #原创 2021-06-20 14:46:11 · 112 阅读 · 0 评论 -
SpringCloud相关属性介绍
prefer-ip-address:我们平时访问的时候获得的都是主机名,因为我们根本没有将IP地址注册到服务中心,prefer-ip-address: true 可以允许我们将IP地址注册到服务中心,这样的话,我们获取的就会是“http://192.168.171.1:8000/goods/findOne/674”带IP地址的连接了而原先的则是:“http://localhost:8000/goods/findOne/674”eureka: instance: hostname: lo原创 2021-06-20 10:28:24 · 249 阅读 · 0 评论 -
SpringCloud服务中心配置入门
SpringCloud首先这是一个专门做微服务的框架,那么说明是微服务呢?微服务其实是一种架构风格,将原本的系统拆分成一个个独立的小型服务,服务间通过HTTP的RESTful API进行通信。了解了做什么之后,我们来看看他是什么。其实SpringCloud是一系列框架的有序集合,也就是说其实他没有重复地制造轮子,就只是单纯的一个集合。但是上面提到了微服务,那不是就和Dubbo与ZooKeeper重合了吗?但是其实SpringCloud作为一个容器集合,他的功能更为强大。其实我们要有一个概念,就是越原创 2021-06-19 20:23:11 · 213 阅读 · 0 评论 -
SpringBoot整合myBatis
同样的,使用idea快速创建,导入起步依赖。接下来假设domain这些类都已经有了。那么我们直接开始写配置文件:1.配置数据源信息,我们直接在我们的application.yaml配置文件里面自己写就好了。spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: mysql://localhost:3306/ssm_db?serverTimezone=Asia/Shanghai username:.原创 2021-06-04 16:11:00 · 74 阅读 · 0 评论 -
SpringBoot整合Junit和Redis
其实说实话很简单,我们用idea 集成的 Spring Initializer自动生成的时候,他就是直接帮你整合进去了,啥也别管,用就是了,自己写个测试类就完事儿了。//这两个就是标准的起手式了@RunWith(SpringRunner.class)@SpringBootTest(classes = SpringbootTestApplication.class)public class UserServiceTest { @Autowired private UserServi.原创 2021-06-04 15:19:41 · 196 阅读 · 0 评论 -
纯注解SSM整合(基于之前的所有的配置整合)
除了jdbc.properties其他的配置文件全部都要消灭掉。接下来第一个:我们杀UserDao.xml。public interface UserDao { @Insert("insert into user(userName,password,realName,gender,birthday)values(#{userName},#{password},#{realName},#{gender},#{birthday})") public boolean save(User u.原创 2021-06-01 21:02:16 · 129 阅读 · 0 评论 -
SSM整合-part7-自定义异常以及异常处理(进阶)
首先我们先自定义一个异常吧,很简单继承RuntimeException,然后实现他的构造方法即可:ublic class BusinessException extends RuntimeException { private int code; public BusinessException() { } public BusinessException(String message,int code) { super(message);原创 2021-06-01 17:02:38 · 166 阅读 · 0 评论 -
SSM整合-part6-表现层数据封装(进阶)
其实这个非常简单,因为我们之前的返回值千奇百怪,有的是Boolean有的是你自定义的对象(User)有的是List,很显然,这很不专业,所以我们需要来统一一下格式,我们来写一个Result类,以后所有的返回都只返回一种类型----Result。public class Result { private int code; private Object data; private String message; public Result(int code) {原创 2021-06-01 16:23:07 · 192 阅读 · 0 评论 -
SSM整合-part5-Spring整合SpringMVC
前面的几个部分,我们已经在Spring上整合了MyBatis了,且通过调用Service层通过了Junit测试,这其实就意味着,我们的Dao层和Service层已经没问题了,同时我们还使用SpringMVC创建了表现层,但是!这个是SpringMVC自己单独做出来的,我们还没整合到Spring中去,所以这一部分我们要做一个整合的工作。第一步:web.xml加载Spring环境,因为我们知道其实一个网页打开最先读取的就是这个配置web.xml,所以我们希望启动服务器的时候就加载Spring的运行环境。原创 2021-06-01 15:46:26 · 123 阅读 · 0 评论 -
SSM整合-part4-根据SpringMVC创建表现层
我们知道SpringMVC做的主要其实是表现层的,所以这里我们就要动web.xml文件了。其实动的也很简单加上设定字符集的增强配置核心DispatchServlet<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" .原创 2021-06-01 14:44:57 · 91 阅读 · 0 评论 -
SSM整合-part3-整合Junit测试(测试通过,这是一个里程碑,代表myBatis整合完毕)
到这一步其实就非常简单了,因为我们之前结构已经搭好了,而且环境依赖都已经导入了,那么接下来就是示范一下如何在test文件夹下写测试文件:来!@RunWith(SpringJUnit4ClassRunner.class)//用什么类来跑@ContextConfiguration("classpath:applicationContext.xml")//读取上下文的环境public class UserServiceTest {//你去看Service的实现类,我们上面已经标注了@Service,//原创 2021-06-01 11:47:09 · 113 阅读 · 0 评论 -
SSM整合-part2-整合分页插件
分页插件直接作为SqlSessionFactoryBean里面的一个属性直接注入即可: <!--整合分页插件--> <property name="plugins"> <!--从源码我们知道要一个Interceptor数组--> <array> <bean class="com.github.pagehelper.PageInterceptor">原创 2021-06-01 11:22:50 · 72 阅读 · 0 评论 -
SSM整合-part1-环境创建(依赖导入)+myBatis整合
第一步:pom.xml创建环境,注入依赖这里注入的是myBatis的所有依赖环境: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependenc.原创 2021-05-31 21:08:10 · 187 阅读 · 0 评论 -
SSM整合-Part0-基础结构搭建
第一步:使用WebApp的模板快速创建Module名字这类的随意取第二步,补足结构:(创建新的文件夹,并且标记他们的类型)同时在三层架构上面创建自己的数据模型并放入domain中,在这个案例中是User类。至此,基本的文件夹结构都已经搭建好了,接下来就是填充里面的文件结构了。我们开始从Dao入手,我们都知道myBatis会动态代理实现Dao,所以Dao层我们只需要写一个对应的接口就好了。第三步:自底(Dao)向上(Service)编写接口(基本就是增删改查)public interfa.原创 2021-05-31 17:22:20 · 172 阅读 · 1 评论 -
SpringMVC 响应
响应我们先来看看之前我们是如何做响应的: @RequestMapping("/requestParam1") public String requestParam1(String name, int age){ System.out.println(name+" is "+age+" years old"); return "page.jsp"; }直接返回一个字符串,SpringMVC会把该字符串作为一个File去找。但是这样我们是怎么知道是原创 2021-05-31 15:23:06 · 86 阅读 · 0 评论 -
SpringMVC 请求
请求其实这个非常简单,我们思考一下我们之前已经学会配置的是不接收任何参数的Servlet,对吧,但是现在要求他接收一个参数该怎么做呢?我们先来看一下之前写的最简单的Servlet:@Controllerpublic class UserController { @RequestMapping("/requestParam1") public String requestParam1(){ System.out.println("nothing"); re原创 2021-05-30 19:32:18 · 89 阅读 · 0 评论 -
Spring-MVC XML配置 Servlet
首先,我们要知道Spring-MVC主要是表示层的一个框架,所以这里的时候我们要创建的是一个Web项目了,整合Tomcat在里面而不是之前Spring框架那样,主要集中在数据层和业务层。首先第一步:在Web.xml文件里面配置DispatcherServlet,其实这一步的配置方法是和普通的配置Servlet是相同的,但是配置的参数有所不同,且用途是有所不同的。 <servlet> <!--与普通的Servlet不同,这里我们使用的是DispatcherServl原创 2021-05-29 21:23:32 · 253 阅读 · 0 评论 -
Spring AOP 注解开发
首先,我们要知道AOP中我们要配置哪几部分切面(Aspect)任何存在通知和切入点映射关系的类都需要被修饰为@Aspect,同时因为我们希望交给Spring来管理,所以用@Component来修饰作为一个Bean在切面中,将通知(共性方法advice)抽取为一个方法切入点(Pointcut)使用一个public void funcName()方法,在该方法上标记@pointcut()里面的参数设置为正则表达式,符合该表达式的方法会被监听拦截到。通知和切入点的映射关系,在通知上面配好切入点的执行时机原创 2021-05-28 12:18:30 · 148 阅读 · 0 评论 -
Spring中整合myBatis(纯注解开发)
第一步,创建主体配置类来取代applicationContext.xml,因为我们知道在之前的XML文件的配置方式里,我们是在applicationContext.xml里面设置:Bean的id和他对应的实现类的映射关系,同时实现资源的注入 <bean id="UserDao" name="userDao" class="com.itheima.dao.daoImp.UserDaoImp"> <property name="username" value="$原创 2021-05-26 17:18:04 · 772 阅读 · 3 评论 -
Spring中整合myBatis(XML格式开发)
首先我们使用Maven来做依赖管理,所以必然有pom.xml文件其次我们使用传统的三层模型来构建,所以结构为src下有Controller,Service,Dao以及Domain。但是因为我们这里说的是myBatis的整合嘛,所以只涉及到Dao层和Service层(做个注入)。首先第一步在pom.xml文件里添加需要的依赖: <dependencies> <!--运行Spring所需要的依赖--> <dependency> <g原创 2021-05-25 20:53:47 · 91 阅读 · 0 评论