bean

外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五)

岁酱吖の 提交于 2020-03-14 01:03:24
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 SpringBoot是如何实现自动配置的?--SpringBoot源码(四) 温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了SpringBoot的自动配置的相关源码,自动配置相关源码主要有以下几个重要的步骤: 从spring.factories配置文件中加载自动配置类; 加载的自动配置类中排除掉 @EnableAutoConfiguration 注解的 exclude 属性指定的自动配置类; 然后再用 AutoConfigurationImportFilter 接口去过滤自动配置类是否符合其标注注解(若有标注的话) @ConditionalOnClass , @ConditionalOnBean 和 @ConditionalOnWebApplication 的条件,若都符合的话则返回匹配结果; 然后触发 AutoConfigurationImportEvent 事件,告诉 ConditionEvaluationReport 条件评估报告器对象来分别记录符合条件和 exclude 的自动配置类。 最后spring再将最后筛选后的自动配置类导入IOC容器中 本篇继续来分析SpringBoot的自动配置的相关源码,我们来分析下 @EnableConfigurationProperties

ssm

感情迁移 提交于 2020-03-13 09:12:46
javaWeb三层架构,就是用Spring去整合其他两个框架 表现层 业务层 持久层 SpringMVC Spring Mybatis Spring环境搭建 1.创建maven项目,不选择模板,->next 2.main->新建webapp->新建WEB-INF,并在pom.xml中添加 <packaging>war</packaging> 3.数据库: CREATE TABLE hero( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(100), ranking INT ); 4.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ice</groupId> <artifactId

SSM

戏子无情 提交于 2020-03-13 09:12:25
1. 项目环境准备 1.1. 技术选型 整个项目使用的 SSM 框架 SpringMVC , Spring , MyBatis , MySql 数据库, Shiro 安全框架 1.2. 使用 Maven 创建 Web 项目 1.3. 引入 maven 项目 pom 文件依赖的和插件配置 Maven 的 pom 文件集成了整个项目所需要的绝大部分框架依赖,后期其他依赖在实际开发中按需引入集合 <project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > <modelVersion>4.0.0</modelVersion> <groupId>cn.zj</groupId> <artifactId>logistics_system</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <spring.version>4

IOC和AOP使用拓展

杀马特。学长 韩版系。学妹 提交于 2020-03-13 02:04:55
多种方式实现依赖注入 构造注入 编写测试类 public class UserServiceImpl implements UserService { // 声明接口类型的引用,和具体实现类解耦合 private UserDao dao; // 无参构造 public UserServiceImpl() { } // 用于为dao属性赋值的构造方法 public UserServiceImpl(UserDao dao) { this.dao = dao; } public void addNewUser(User user) { // 调用用户DAO的方法保存用户信息 dao.save(user); } } 在使用设值注入时,Spring通过JavaBean无参构造方法实例化对象,当我们编写带参构造方法后,java虚拟机不会再提供默认的无参构造方法,为了保证使用的灵活性,建议自行添加一个无参构造方法 配置文件代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www

spring四种依赖注入方式

旧城冷巷雨未停 提交于 2020-03-12 19:23:10
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。 spring有多种依赖注入的形式,下面仅介绍spring通过xml进行IOC配置的方式: Set注入 这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口): Java代码 <EMBED height=15 type=application/x-shockwave-flash pluginspage=http://www.macromedia.com/go/getflashplayer width=14 src=http://blessht.iteye.com/javascripts/syntaxhighlighter/clipboard_new

@Autowired和@Resource的区别

依然范特西╮ 提交于 2020-03-12 16:44:11
虽然他们的用法都是 装配bean 的,但这两个注解的所属包不一样,@Autowired是属于Spring的注解,而@Resource是属于J2EE。 @Resource 默认 按照名称方式进行bean匹配,@Autowired 默认 按照类型方式进行bean匹配( 如果存在类型的多个实例就尝试使用byName匹配 )。举个例子,现在有一个A接口类,有B和C两个实现类,我们需要引用到B类,首先按照面向接口的编程思想,我们注入的bean一定是A(当然直接注入B或C也是可以的,而且这样还不用纠结是按类型还是按名称来装配,但是按照面向接口的编程思想,这样就不美了),那么使用@Resource(name = "b") A a 或者 @Autowired @Qualifier(“b”) A a(@Autowired A b,这样也是可以让其使用 byName来进行装配 的哦) 这两种就都可以达到我们的目的了。 总结:这样看来,其实在一般我们的spring类型的项目中,讨论使用@Autowired或@Resource完全是没有意义的,因为他们在实现结果上来说彼此完全是可以互相取代的,不管黑猫白猫能抓到老鼠的就是好猫,有些同学觉得 @Resource是属于J2EE,减少spring的耦合,这样代码比较优雅, 但是我个人觉得你既然都已经用spring框架了,那还谈什么减少spring的耦合

Spring10种常见异常解决方法

不问归期 提交于 2020-03-12 11:33:34
一、找不到配置文件的异常 解释:这个的意思是说,没有找配置文件为controller的xml,修改一下配置文件名字即可。 二、在xml中配置的命名空间找不到对应的Schema的异常 xmlns:util="http://www.springframework.org/schema/util" 去掉,因为schema中不存在util命名 三、找不到jackson.jar的异常 缺少jackson的jar包,导入jackson-all-1.9.5.jar即可 四、bean不是唯一的异常 这个异常是说,一个类配置了多个bean之后,我们还在使用ctx.getBean(Person.class);方法,即根据bean的类映射去获取bean对象。这个时候返回的bean对象不是唯一的,有多个bean对象。解决方法,就是根据bean的id去获取bean对象。 五、缺少日志jar包 这个问题是说,项目中缺少spring依赖的jar包文件。解决方案:加入commons-logging-1.1.3.jar即可。 六、找不到bean异常 这个问题是说,项目中找不到name为filter2的bean。说白了就是在applicationContext.xml中找不到id为filter2的bean,配置一下即可。 七、缺少spring-webmvc-4.0.6.RELEASE.jar包 解决方案

Spring+Mybatis

六月ゝ 毕业季﹏ 提交于 2020-03-12 11:01:43
1、整合方式共有四种,这里总结了三种。 2、通用配置 2.1、依赖包: 在导依赖包时,不能导入 < dependency > < groupId > org.ow2.asm </ groupId > < artifactId > asm </ artifactId > < version > 5.0.3 </ version > </ dependency > 此包,否则会报方法找不到的异常,其实是jar包中的类冲突。 < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 </ modelVersion > < groupId > com.lin </ groupId > < artifactId > spring-mybatis </ artifactId > < version > 0.0.1-SNAPSHOT </ version > < dependencies

Spring Boot 中的AOP使用示例,打印请求执行时间等

巧了我就是萌 提交于 2020-03-12 10:15:49
参考书: Spring实战(第4版) Spring Boot 2 精髓 IDE: IDEA 2019.2.3 Maven 3.6.2 Spring Boot 2.1.10.RELEASE Knife4j 一、准备: 1. 对Spring AOP 有点了解 2. pom中添加aop的starter 如果parent定义了版本,此处可以不加version <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> <version>2.1.10.RELEASE</version> </dependency> 二、配置 1. 在启动类添加自动代理注解 @EnableAspectJAutoProxy 2. 编写切面 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.StopWatch; @Configuration public class GlobalConfig { @Bean StopWatch

教妹学Java:Spring 入门篇

跟風遠走 提交于 2020-03-12 09:02:14
你好呀,我是沉默王二,一个和黄家驹一样身高,刘德华一样颜值的程序员(管你信不信呢)。从两位偶像的年纪上,你就可以断定我的码龄至少在 10 年以上,但实话实说,我一直坚信自己只有 18 岁,因为我有一颗好学的心。本篇文章就打算通过我和三妹对话的形式来学一学“Spring 的基础”。 教妹学 Java,没见过这么放肆的标题吧?“语不惊人死不休”,没错,本篇文章的标题就是这么酷炫,不然你怎么会点进来? 我有一个漂亮如花的妹妹(见上图),她叫什么呢?我想聪明的读者能猜得出:沉默王三,没错,年方三六。父母正考虑让她向我学习,做一名正儿八经的 Java 程序员。我期初是反对的,因为程序员这行业容易掉头发。但家命难为啊,与其反对,不如做点更积极的事情,比如说写点有趣的文章教教她。 “二哥,你怎么现在才想起来要教我学 Spring 啊?” “没办法啊,三妹,之前教妹学 Java 系列被喷的体无完肤,没办法就停滞了。今天决定走自己的路,让别人也走自己的路去。” “我就说嘛,Spring 在 Java 中占据那么重要的位置,你竟然没舍得教我,还以为你怕被我拍死在沙滩上呢?” “嗯,你天真了。” 01、Spring 简史 “二哥,据说 Spring 前后经历了 3 个时代,你能给我说说吗?” “没问题啊。” 1)石器时代 也就是 Spring 1.x 时代,一个项目看上去全都是 xml 文件