@Primary和@Qualifier这两个注解的意思: @Primary:  意思是在众多相同的bean中,优先使用用@Primary注解的bean. @Qualifier : 这个注解则指定某个bean有没有资格进行注入.…
首先解释一下@Primary和@Qualifier这两个注解的意思:@Primary的意思是在众多相同的bean中,优先使用用@Primary注解的bean.而@Qualifier这个注解则指定某个bean有没有资格进行注入. 示例代码的思路是:1.一个接口Dessert和这个接口的三个实现类,2.再在一个类(AbrahamLincoln)中自动注入Dessert这个接口,3.用自动扫描机制自动创建bean. 如果不用@Primary和@Qualifier注解,势必出现如下错误:NoUnique…
前言 最近在思考使用java config的方式进行配置,java config是指基于java配置的spring.传统的Spring一般都是基本xml配置的,后来spring3.0新增了许多java config的注解,特别是spring boot,基本都是清一色的java config. Spring配置方式 第一阶段:xml配置    在spring 1.x时代,使用spring开发满眼都是xml配置的bean,随着项目的扩大,我们需要把xml配置文件分放到不同的配置文件中,那时候需要频繁…
一.通过注解(annotation)装配Bean 通过之前的学习,我们已经知道如何使用XML装配Bean,但是更多的时候已经不再推荐使用XML的方式去装配Bean,更多的时候会考虑注解(annotation)的方式去装配Bean.使用注解的方式可以减少XML的配置,注解功能更为强大,它既能实现XML的功能,也能提供自动装配的功能,采用了自动装配后,程序员所需要做的决断就减少了,更加有利于对程序的开发,这就是"约定优于配置"的开发原则. 在Spring中,它提供了两种方式来让Spring…
Spring中提供了@Primary和@Qualifier注解来解决一个接口多个实现的注入问题. @Primary注解 Spring中有提供一个@Primary注解,具体的作用是在一个接口有多个实现类的情况下,会默认选择其中一种实现,帮助Spring对象的正常注入. 比如说现在有一个接口UserService,它有两个实现类UserServiceImpl1和UserServiceImpl2,根据依赖倒置的原则,在Spring中注入的对象应该是接口,由接口去调用具体的实现. // 接口 publi…
最开始做项目时,依赖注入用到的注解都是 J2EE 的 @Resource,那时还根本不了解 spring 有 @Autowired.心塞. 前两天想到估计有很多刚开始学习 java 的童鞋可能对这两个注解并没有注意区分,那我就在这总结一下吧.当然很多都是 copy 自网络. 相同点: 1. 都是用来装配 Bean,都可以写在字段上,或者写在 setter 方法上. 不同点: @Autowired 1. 默认按类型装配. 2. 默认情况下必须要求对象存在,如果允许 Null 值,可是设置 requ…
@EnableEurekaClient 和 @EnableDiscoveryClient 都是让eureka发现该服务并注册到eureka的注解 相同点: 它们都能让注册中心Eureka发现 , 并将该服务注册到注册中心上; 不同点: @EnableEurekaClient只适用于Eureka作为注册中心,而@EnableDiscoveryClient可是其他注册中心.…
再接手老文档的时候,发现有这么一个问题 错误显示为: 原文档写法: 解决方法: 这是一个编译时写法的问题,将上方的RequestMapping去掉,然后把路径放在下面的PostMapping 便可以正常运行…
@RequestParam 作用:将请求参数绑定到控制器的方法参数上,主要用于接收几班类型参数 语法:@RequestParam(value="参数名",required="true/false",defaultValue="") value:参数名 required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错. defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为f…
注解映射必须满足两大条件:Hibernate3.2以上版本和JSEE 5. @Entity 类注释,所有要持久化的类都要有@Entity   public class Org  implements java.io.Serializable {    }   @Id 主键       @Id        @GeneratedValue        private String orgId;         private String orgName;   @Column(name="...…
在上一篇文章中我详细的介绍了如何搭建maven环境以及生成一个maven骨架的web项目,那么这章中我将讲述Spring MVC的流程结构,Spring MVC与Struts2的区别,以及例子中的一些配置文件的分析. 一.Spring MVC 3.0介绍 Spring MVC是一个典型的MVC框架,是Spring内置的Web框架,可以作为应用项目的展示层,继Spring 2.0对Spring MVC进行重大升级后,Spring 2.5又为Spring MVC引入了注解驱动功能,再到3.0时代,全…
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute…
1. 注解的理解① jdk 5.0 新增的功能*② Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理.通过使用 Annotation,* 程序员可以在不改变原逻辑的情况下, 在源文件中嵌入一些补充信息.*③在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等.在JavaEE/Android* 中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗* 代码和XML配置等. 框…
java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种: 生成文档.这是最常见的,也是java 最早提供的注解.常用的有@see @param @return 等 跟踪代码依赖性,实现替代配置文件功能.比较常见的是spring 2.5 开始的基于注解配置.作用就是减少配置.现在的框架基本都使用了这种配置来减…
前面从开发效率比较了 Laravel 和 Spring Boot两个框架,见:Laravel 和 Spring Boot 两个框架比较创业篇(一:开发效率) ,这一篇打算比较一下人工成本. 本文说的人工成本是狭义的技术支出成本.当然人工成本不单纯是开发人员的人工成本,同时包含了团队协作管理.架构设计.运维等方面的人工(团队)成本. 本文从以下几个维度分析: 程序员 技术管理 程序员 相信这个是大家比较关注的维度,很好理解,就是要根据需求撸一套产品出来,无论是后端.前端.APP还是小程序.中台,都…
泛型     1.泛型类:具有一个或多个类型变量的类,称之为泛型类 class A<T>{ } 2.在创建泛型实例时,需要为其类型变量赋值 A<String> a = new A<String>();         *如果创建实例时,不给类型变量赋值,那么就会有一个警告 3.泛型方法:具有一个或多个类型变量的方法,称之为泛型方法 class A<T> {         public T fun(T t1) {}     } fun()方法不是泛型方法,它…
一.使用 class Program { static void Main(string[] args) { User u1 = new User(); u1.UserName = "aaaaaaa"; u1.Salary = 89.63m; u1.BirthDay = DateTime.Now; u1.Age = ; User u2 = new ObjectMapping<User, User>().Mapping(u1); Console.WriteLine("…
前言 上篇主要讲解了注解的基本操作,以及一个运行时注解的小例子,今天我们主要来说道说道注解中另一种实现方式,编译时注解(CLASS),不同于上篇例子的运行时注解(RUNTIME),需要在代码运行时,反射拿到注解的参数值,然后再把值绑定回去,这样反射毕竟消耗性能.著名的ButterKnife就是用的编译时注解,利用APT在编译时生成文件,再去赋值,就不会有性能消耗问题啦~ 1.编译时注解 因为编译时注解需要用到AbstractProcessor这个类,而这个是在JDK里面的,所以我们需要Andro…
Mybatis之增强型注解 MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,也能方便的编写简单的数据库操作代码.但是注解对动态SQL的支持一直差强人意,即使MyBatis提供了InsertProvider等*Provider注解来支持注解的Dynamic SQL,也没有降低SQL的编写难度,甚至比XML格式的SQL语句更难编写和维护.注解的优势在于能清晰明了的看见接口所使用的SQL语句,抛弃了繁琐的XML编程方式.但没有良好的动态SQL支持,往往就会导致所…
350. 两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [4,9] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致. 我们可以不考虑输出结果的顺序. 进阶: 如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 的大小比 num…
1.Spring Boot与MyBatis融合的矛盾问题: Spring家族的使命就是为了简化而生,但是随着Spring的发展壮大,有点事与愿违了.为了坚持初心,Spring家族祭出了一大杀器---Spring Boot.Spring Boot的核心理念是:不建议使用xml文件配置.但是,这对MyBatis来说进退两难,因为MyBatis离不开xml,需要xml来配置sql语句.为了迎合Spring Boot的发展理念,MyBatis官方开发了mybatis-spring-boot-starte…
创建线程的第二中方式: /** *      步骤: 1定义类实现Runnable接口      2.实现Runnable接口中的run方法.      3.通过Thread类建立线程对象,并将Runnable 接口的子类对象作为实际参数传给Thread类的构造方法.      4.调用Thread类的start方法开启线程,并调用Runnable接口子类的run方法      为什么要将Runnable接口子类的对象传递给Thread类的构造方法?      因为线程的任务(要运行的代码)都封…
先来看一段常见的数据库操作代码: ``` protected User getDataFromDatabase(long id){ String sql = "select firstname from user where id=?";//1 Connection conn = DBConnectionFactory.getConnection(); PreparedStatement stat; User user;//2 try { stat = conn.prepareStat…
出现问题的项目算是一个新项目,但基本的脚手架代码是从另一个项目里迁过来的,原项目并没有报错,只有新项目才报异常.看报错内容,判断发生冲突的主要是spring-boot-starter-security和springfox-swagger2这两个jar包的文件. 新项目错误如下: Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabl…
Hi,大家好,我是Mic. 一个工作2年的粉丝,问我一个Spring里面的问题. 希望我能从不同的视角去分析,然后碾压面试官. 这个问题是: "@Resource和@Autowired"的区别. 下面看看普通人和高手的回答 普通人: @Resource和@Autowired的区别我认为是在它们的一个注入的一个方式上 @Resource它是根据name来进行注入的,@Autowired是根据类型来注入的. 高手: 好的,面试官. @Resource和@Autowired这两个注解的作用都…
前言:在web项目中引入spring框架中的配置文件,我们给每一个java bean进行相关配置可以非常安全,便捷的管理我们的bean.那么,问题来了,如果一个项目中所涉及到的java bean十分庞大,而且每一个bean中的配置都是大同小异的,那么这份applicationContext.xml文件恐怕是无能为力了.接下来,我们使用spring的注解便可以很好的解决这一问题. 首先:我们浏览一下我们原始的applicationContext.xml中的部分配置 <bean id="myN…
找到上次我们搭建的SSH框架 浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="myIndexAction" class="ssh.action.IndexAction" scope="prototype"> <property name="is" ref="myIndexService"></property> </…
 目的:主要是通过使用Spring注解的方式来简化ssh框架的代码编写. 首先:我们浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="myIndexAction" class="ssh.action.IndexAction" scope="prototype"> <property name="is" ref="myIndexService"…
注解@ConfigurationProperties使用方法 前言 最近在思考使用java config的方式进行配置,java config是指基于java配置的spring.传统的Spring一般都是基本xml配置的,后来spring3.0新增了许多java config的注解,特别是spring boot,基本都是清一色的java config. Spring配置方式 第一阶段:xml配置     在spring 1.x时代,使用spring开发满眼都是xml配置的bean,随着项目的扩大…
spring-ioc的使用 IOC容器在很多框架里都在使用,而在spring里它被应用的最大广泛,在框架层面 上,很多功能都使用了ioc技术,下面我们看一下ioc的使用方法. 把服务注册到ioc容器 使用属性注入反射对应类型的实例 多态情况下,使用名称反射类型的实例 把服务注册到ioc容器 @Bean注册组件 使用@Bean注解进行类型的注册,默认你的ioc容器里类型为bean的返回值,名称为bean所有的方法名,与 你的包名称没有直接关系,如果你的接口有多种实现,在注册时可以使用@Bean("…