Fork me on GitHub

Spring是如何解决循环依赖的

循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错。下面说一下Spring是如果解决的。 首先,需要明确的是spring对循环依赖的处理有三种情况: ①构造器的循环依赖:这种依赖spring是处理不了的,直 接抛出BeanCurrentlylnCreationException异常。 ②单例模式下...

为什么Spring不建议使用field方式注入

前言使用Spring框架最核心的两个功能就是IOC和AOP。IOC也就是控制反转,我们将类的实例化、依赖关系等都交由Spring来处理,以达到解耦合、利用复用、利于测试、设计出更优良程序的目的。而对用户来说,操作最对的便是注解。在Spring中提供了三类注解方式,下面我们就逐一分析。最后,你会发现,你最常用、看起来最方便的形式确实最不推荐的一种形式。 常见的注入方式Field注入123456...

Spring 注释 @Autowired 和@Resource 的区别

一、@Autowired和@Resource都可以用来装配bean,都可以写在字段上,或者方法上。 二、@Autowired属于Spring的;@Resource为JSR-250标准的注释,属于J2EE的。 三、@Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,例如:@Autowired(require...

Spring:@Profile,AOP

Profile: 可以根据当前的环境,动态激活和切换一系列的组件功能 指定组件在那个环境下才能被注册到容器中,不指定任何环境下都能注册到 1.加了环境标识的bean只有环境激活的时候才能注册到容器中 默认是default ,@Profile(“default”) 才能加入到环境中 2.还可以下载类上,只有在当时的环境下,整个类的方法才会生效 3.默认没标识的bean在,任何环境下都是加载...

Spring:生命周期,属性赋值,自动装配

1.Bean的生命周期 创建—初始化—销毁 容器管理bean的生命周期: 我们可以自定义初始化和销毁的方法 构造器: 1.单实例:在容器创建好之后创建实例 2.多实例:在每次获取的时候创建对象 初始化: 对象创建好,并赋值好,进行初始化 销毁: 单实例:容器关闭的时候 多实例:容器不会管理这个bean,在容器关闭的时候不会调用销毁的方法 指定初始化和销毁的方法:通...

Spring注解:@Lazy,@Conditional,@import,FactoryBean接口

1.@Lazy懒加载 懒加载:针对单实例的 单实例bean,默认在容器启动的时候创建对象 懒加载就是:容器启动的时候不创建对象,在第一次获取bean的时候创建对象,并且初始化、 Config2.class 12345678@Configurationpublic class Config2 { @Bean("per") public Pe...

注解:@ComponentScan 注解

在平时的开发,我们会配置 @Controller 、 @Service 、 @Repository 、@Component 注解来声明该类为 Spring IoC容器的组件。 在 xml 中会配置扫描包,那么使用 JavaConfig 的方式,同样可以配置扫描包。 DAO 的注解类 123456@Repositorypublic class BusinessDAO { pu...

Spring注解:@Configuration,@Bean,@ComponentScan(),@Scope

传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事物,这么做有两个缺点:1、如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大;如果按需求分开.xml文件,那么.xml文件又会非常多。总之这将导致配置文件的可读性与可维护性变得很低。2、在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率。为...

Spring @Configuration和@Component区别

Spring @Configuration 和 @Component 区别一句话概括就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。 下面看看实现的细节。 1234567@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Comp...

聊聊@Controller和@RestController的区别?

知识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。 1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。 2) 如果需...