
Spring
文章平均质量分 56
以实战为线索,逐步深入spring各个开发环节;打造后端工作流,掌握spring技术栈的核心框架
Thecoastlines
努力是为了让自己不再平庸
展开
-
深入浅出Spring源码(一)构建Spring源码阅读环境
3.修改build.gradle配置📚找到spring-framework-5.3.22目录下的build.gradle文件,将repositories变量的内容修改为如下```groovy repositories { maven { url "https://maven.aliyun.com/repository/public" } maven { url "https://maven.aliyun.com/repository/apache-snapshots" } mav...原创 2022-08-07 23:40:43 · 1044 阅读 · 2 评论 -
springboot出现Requested bean is currently in creation: Is there an unresolvable circular reference?
这是同时在spring配置类中使用@Autowired和@Bean注解出现bean已经注入的问题如以下代码就会出现该错误 @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Autowired private PasswordEncoder passwordEncoder;原因:同一个类中已经存在bean对象,就.原创 2021-10-19 15:19:41 · 10287 阅读 · 0 评论 -
动态代理-JDK
代理模式:假设一个场景,你的公司是一位软件公司,你是一位软件工程师,显然客户带着需求不会去找你谈,而是去找商务谈,此时商务就代表公司。商务的作用:商务可以谈判;也有可能在开发软件之前就谈失败,此时商务就会根据公司规则去结束和客户的关系,这些都不用软件工程师来处理。代理对象的作用:在真实对象访问之前或者之后加入对应的逻辑,或者根据其他控制是否使用真实对象,这个例子就是商务控制了客户对软件工程师的访问。1.定义接口public interface HelloWorld { public void原创 2020-10-18 15:43:32 · 272 阅读 · 2 评论 -
SSM实现个人博客-day01
1、需求分析原创 2020-11-11 10:20:02 · 216 阅读 · 0 评论 -
SSM实现个人博客-day02
2、数据库设计原创 2020-11-11 11:44:09 · 194 阅读 · 0 评论 -
SSM实现个人博客-day04
3.项目搭建(SSM整合)(1)创建maven工程,导入相应的依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.comp原创 2020-11-11 12:32:05 · 246 阅读 · 0 评论 -
SSM实现个人博客-day03
3.相关包与实体类的创建 1.包名与路径如下:2.实体类的编写Blog类public class Blog implements Serializable { /** * */ private static final long serialVersionUID = 1L; private Integer id; // 编号 private String title; // 博客标题 private String summary;原创 2020-11-11 12:41:41 · 242 阅读 · 0 评论 -
Spring原始注解开发-02
使用@Repository、@Service、@Controller注解配置,使其更加清晰属于哪一层,因为我是模拟的web层,所有没有使用@Controller注解,后面结合web开发会使用到1.创建UserDao接口及其实现类UserDaoImpl(接口代码省略)//<bean id="userDao" class="com.hao.dao.impl.UserDaoImpl"></bean>@Repository("userDao")public class UserDao原创 2020-11-14 18:28:36 · 149 阅读 · 0 评论 -
SpringMVC-自定义转换器
1.定义转换器类实现Converter接口import org.springframework.core.convert.converter.Converter;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateConverter implements Converter<String, Date> { @Overr原创 2020-11-25 15:31:44 · 294 阅读 · 1 评论 -
SpringMVC-获得Restful风格的参数
使用@PathVariable注解:接收请求路径中占位符的值 @RequestMapping("/report18/{username}") @ResponseBody public void save18(@PathVariable(value = "username") String username){ System.out.println(username); }必须要保证value的参数要和{}里面的参数一样当你启动服务器在浏览器访问http://l原创 2020-11-25 14:19:08 · 291 阅读 · 0 评论 -
SpringMVC-注解@RequestParam
当请求的参数名称与Controller的业务方法不一致时,就需要通过@RequestParam注解进行显示的绑定1.value:映射参数 @RequestMapping("/report17") @ResponseBody //将name映射到username public void save17(@RequestParam(value = "name") String username){ System.out.println(username); }启动原创 2020-11-25 13:25:46 · 150 阅读 · 0 评论 -
SpringMVC-设置编码过滤器
1.接上文-》springmvc获取请求参数链接2.在web.xml配置编码过滤器<!-- 配置编码过滤器--> <filter> <filter-name>CharacterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>原创 2020-11-25 12:36:20 · 837 阅读 · 0 评论 -
SpringMVC-开启静态资源访问权限
1.配置<mvc:resources mapping="/js/**" location="/js/"/>mapping:代表js目录下的所有文件location:代表某个静态资源具体的文件路径2.如果springmvc找不到静态资源就交给tomcat找静态资源<mvc:default-servlet-handler/>...原创 2020-11-25 12:20:39 · 1029 阅读 · 0 评论 -
SpringMVC获取请求参数-集合类型
1.创建User实体类```javapublic class User { private String username; private int age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public原创 2020-11-25 11:12:37 · 421 阅读 · 0 评论 -
SpringMVC获取请求参数-POJO类型参数
1.Controller中的业务方法的POJO参数的属性名与请求参数一致,参数值会自动映射匹配1.创建POJO类public class User { private String username; private int age; public String getUsername() { return username; } public void setUsername(String username) { this.u原创 2020-11-24 18:50:43 · 653 阅读 · 4 评论 -
SpringMVC获取请求参数-基本类型
1.Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配(json形式) <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.8</version> </depende原创 2020-11-24 18:36:54 · 138 阅读 · 0 评论 -
SpringMVC的数据响应-回写数据
1.直接返回字符串 @RequestMapping("/report5") public String save5(HttpServletRequest request){ request.setAttribute("username","哈哈哈"); return "success"; } @RequestMapping("/report6") public void save6(HttpServletResponse response)原创 2020-11-24 17:30:40 · 267 阅读 · 0 评论 -
SpringMVC的数据响应方式-页面跳转
1.返回字符串形式直接返回字符串:此种方式会返回字符串与视图解析器的前后缀拼接后跳转有关视图解析器的拼接请访问此地址注意:WEB-INF下的资源一般不能访问,因为转发是服务器的操作所以可以访问到该目录下的资源;而重定向是浏览器的操作,所以不能访问到该目录下的资源2.返回ModelAndView(4种形式)@Controllerpublic class UserController { @RequestMapping("/report") public String save(原创 2020-11-24 13:56:22 · 260 阅读 · 0 评论 -
SpringMVC-组件分析之视图解析器(prefix,suffix)
SpringMVC的默认组件都是在DispatcherServlet.properties配置文件中配置的;spring-webmvc->org/springframewrok/web/servlet/DispatcherServlet.properties,该文件中配置了默认的视图解析器打开org.springframework.web.servlet.view.UrlBasedViewResolver翻看该解析器源码,可以看到该解析器的默认设置 public static final S原创 2020-11-24 12:10:00 · 3338 阅读 · 1 评论 -
SpringMVC-快速入门
1.导入SpringMVC的相关坐标(其他jar包省略) <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.9.RELEASE</version> </dependency>2.配置SpringMVC核心控制原创 2020-11-23 16:30:31 · 192 阅读 · 1 评论 -
深度理解springboot集成cache缓存之源码解析
一、案例准备1.创建数据表(employee表)2.创建Employee实体类封装数据库中的数据@AllArgsConstructor@NoArgsConstructor@Data@ToStringpublic class Employee { private Integer id; private String lastName; private String email; private Integer gender; //1.男 2.女原创 2021-01-14 22:50:40 · 496 阅读 · 0 评论 -
史上最详细的SSM框架整合(Spring、SpringMVC、Mybatis)
#毫无疑问我们肯定是使用Spring去整合SpringMVC和Mybatis,在整合过程中我们首先要让各自的模块实现,然后再去使用Spring整合;比如我先实现Mybatis框架的配置,然后再通过测试看操作数据库能否成功,如果测试成功了我们再去使用Spring整合Mybatis;当然SpringMVC也一样,先编写SpringMVC所需要的一些配置项,测试web层能够实现之后再去使用Spring整合SpringMVC;1.导入坐标 <dependencies> <depende原创 2020-11-30 20:19:41 · 351 阅读 · 1 评论 -
Spring集成web环境(使用封装好的工具)
接上文spring集成web环境(手动实现)##########代码接上文#############spring提供了一个监听器ContextLoaderListener对上述功能的封装,该监听器内部加载spring配置文件,创建应用上下文对象,并存储到ServletContext域中,提供了一个客户端工具WebApplicationContextUtils供使用者获取上下文对象1.导入spring-web坐标 <dependency> <groupId>org原创 2020-11-23 14:19:35 · 145 阅读 · 1 评论 -
Spring集成web环境(手动实现)
1.创建UserDao接口及其实现类UserDaoImpl(接口代码省略)public class UserDaoImpl implements UserDao { @Override public void save() { System.out.println("save running...."); }}2.创建UserService及其实现类UserDaoImpl(接口代码省略)public class UserServiceImpl impleme原创 2020-11-23 12:35:33 · 320 阅读 · 0 评论 -
Spring的事务控制-基于注解的方式
模拟转账操作,即Jone减少500,tom增加500如果有疑问请访问spring事务控制-基于xml方式1.创建数据表2.创建Account实体类public class Account { private String name; private String money; public String getName() { return name; } public void setName(String name) {原创 2020-11-22 16:08:09 · 159 阅读 · 0 评论 -
Spring的事务控制-基于xml方式
介绍:该程序模拟了转账操作,即Jone减少500元,tom增加500元1.导入坐标 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> <dependency> <gr原创 2020-11-22 15:28:01 · 339 阅读 · 2 评论 -
编程式事务控制相关对象
以下内容不需要记忆,了解即可1.PlatformTransactionManager(平台事务管理器)PlatformTransactionManager接口是spring的事务管理器,它提供了我们常用的操作事务的方法1)TransactionStatus getTransaction(TransactionDefination defination):获取事务的状态信息2)void commit(TransactionStatus status):提交事务3)void rollback(T原创 2020-11-19 19:03:16 · 220 阅读 · 0 评论 -
Spring-JdbcTemplate(注入到spring容器)-02
1.导入spring-jdbc和spring-tx坐标 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> <dependency> <groupId>org.sp原创 2020-11-17 20:20:50 · 289 阅读 · 0 评论 -
Spring-JdbcTemplate(注入到spring容器)-01
1.导入spring-jdbc和spring-tx坐标 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> <dependency> <groupId>org原创 2020-11-17 20:02:30 · 527 阅读 · 0 评论 -
Spring-JdbcTemplate基本使用
概述:它是spring提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装,spring框架为我们提供了很多的操作模板类。例如操作关系型数据库JdbcTemplate和HibernateTemplate,操作nosql数据库RedisTemplate,操作消息队列的JmsTemplate等等1.导入spring-jdbc和spring-tx坐标(因为里面封装的是jdbc模板对象) <dependency> <groupId>org.springframewo原创 2020-11-17 18:02:56 · 164 阅读 · 0 评论 -
Spring-aop注解开发(切点表达式的抽取)
接上一篇aop注解快速开发@Component@Aspect //标注当前aspect是切面类public class MyAspect { @Before("Pointcut()") public void before(){ System.out.println("前置增强..."); } @After("Pointcut()") public void afterReturning(){ System.out.pri原创 2020-11-17 17:00:08 · 453 阅读 · 2 评论 -
spring-基于注解的aop开发(快速入门)
步骤:1.导入坐标<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> <dependency> <groupId>org.springframework</原创 2020-11-16 21:47:51 · 152 阅读 · 0 评论 -
spring-xml实现aop-通知的种类
如果本代码有疑问,请访问spring-aop快速入门或者spring-aop动态代理技术(底层分析)1.导入aop的相关坐标<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.9.RELEASE</version> <原创 2020-11-16 14:49:45 · 142 阅读 · 0 评论 -
spring-基于xml的aop开发-快速入门
1.导入aop的相关坐标<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.9.RELEASE</version> </dependency> <dependency> <g原创 2020-11-16 12:24:04 · 178 阅读 · 0 评论 -
spring-aop相关概念
如果下面有疑问请看完动态代理技术的分析Aop术语:Target(目标对象):要被增强的方法的对象Proxy(代理对象):简单的说就是对目标对象进行增强的代理类Joinpoint(连接点):可以被增强的方法Ponintcut(切入点):已经被增强的方法Advice(通知):对目标对象中的某个方法进行增强,这个增强是一段逻辑代码,这段代码就是通知Aspect(切面):切入点+通知Weaving(织入):将切点跟通知结合的过程叫做织入开发明确事项:1.编写核心业务类代码...原创 2020-11-15 20:06:19 · 139 阅读 · 0 评论 -
Spring-AOP动态代理技术(底层代码)
1.JDK代理:基于接口的动态代理技术目标对象必须有接口,目标对象有什么方法,目标接口就有什么方法,运行期间基于接口动态生成代理对象,所以代理对象也就有目标对象同样的方法。注意:以下代码只是底层jdk动态代理实现的方式,我们在开发过程中只需要在配置文件中进行配置即可,这些代码spring会帮你自动生成(这是模拟底层)(1)创建接口及其实现类public interface TargetInterface { public void save();}public class Ta原创 2020-11-15 17:21:37 · 241 阅读 · 0 评论 -
Spring-AOP底层实现
1.aop的底层实现:通过spring提供的动态代理技术实现的,在运行期间,spring通过动态代理技术动态的生成代理对象,代理对象方法执行时增强功能的介入,再去调用目标对象的方法,从而完成功能的增强相信读以上官方术语感到很头疼,那我就用口头叙述一下:当我们运行程序时,spring利用动态代理技术生成代理对象,然后代理对象在调save()方法时,为其save()方法增加一个日志控制的功能(运行程序期间)...原创 2020-11-15 16:07:30 · 243 阅读 · 0 评论 -
Spring-AOP
1.作用:在程序运行期间,不修改源代码的情况下对方法进行增强优势:减少重复代码,提高开发效率,便于维护aop:面向切面编程,完成解耦合功能例子演示比如我一个程序中包含这三个功能,然后我想让每个功能我打印日志,此时需要将日志和每个功能结合起来;如果有一天我要修改日志的代码,那么这三个功能都要修改代码,因为它这日志是和每个功能的代码耦合死的。如果像这样的功能不止三个,那就会很麻烦,耦合度太高,所以就引入aop的概念我们把日志功能提取出来,让这个程序称为四个功能,提高代码的可重用性,但是我们想原创 2020-11-15 15:48:53 · 124 阅读 · 0 评论 -
Spring相关的API-ApplicationContext
1.ClassPathXmlApplicationContext它是从类的根路径下加载配置文件推荐使用这种public class UserController { public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); UserService service =原创 2020-11-14 23:20:46 · 228 阅读 · 0 评论 -
spring新注解
使用原始注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下:1.非自定义的Bean配置:< bean>2.加载properties文件的配置:<context:property-placeholder>3.组件扫描的位置:<context:component-scan >4.引入其他文件:< import>新注解@Configuration:用于指定当前类是一个Spirng配置类,当创建容器时会从该类上进行加载@ComponentS原创 2020-11-14 23:19:14 · 184 阅读 · 1 评论