需求:将某个普通类做为组件注册到容器中,可通过如下办法 1.定义HelloService类 package springboot_test.springboot_test.service; public class HelloService {} 2.定义配置类MyConfig.java package springboot_test.springboot_test.config; import org.springframework.context.annotation.Bean;import…
写在前面 在之前的Spring版本中,我们只能通过写XML配置文件来定义我们的Bean,XML配置不仅繁琐,而且很容易出错,稍有不慎就会导致编写的应用程序各种报错,排查半天,发现是XML文件配置不对!另外,每个项目编写大量的XML文件来配置Spring,也大大增加了项目维护的复杂度,往往很多个项目的Spring XML文件的配置大部分是相同的,只有很少量的配置不同,这也造成了配置文件上的冗余. 项目工程源码已经提交到GitHub:https://github.com/sunshinelyz/sp…
Spring中常见的bean创建异常 1. 概述     本次我们将讨论在spring中BeanFactory创建bean实例时经常遇到的异常 org.springframework.beans.factory.BeanCreationException,下面我们将讨论并再现这些异常,同时给出解决方案. 2. Cause:org.springframework.beans.factory.NoSuchBeanDefinitionException     到目前为止最常见的导致BeanCreat…
1. @Bean: 1.1 定义 从定义可以看出,@Bean只能用于注解方法和注解的定义. @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) 1.2 spring文档中对 @Bean的说明 The @Bean annotation is used to indicate that a method instantiates, configures and i…
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基本都采用了XML作为配置文件,但是现在Java框架又不约而同地支持基于Annotation的"零配置"来代替XML配置文件,Struts2.Hibernate.Spring都开始使用Annotation来代替XML配置文件了:而在Spring 3.x提供了三种选择,分别是:基于XML的配置…
Springboot@Configuration和@Bean详解 一.@Configuration @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Configuration { @AliasFor( annotation = Component.class ) String value() default ""; } 可以看…
一.原始的 xml配置方式 1.Spring pom 依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.2.RELEASE</version> </dependency> 2.JavaBean public class Person { priva…
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.@Configuration 和 @BeanSpring的Java配置方式是通过 @Configuration 和 @Bean 注解实现的:a.@Configuration 作用于类上,相当于一个xml配置文件b.@Bean 作用于方法上,相当于xml配置中的<bean> 2.Java配置示例演示通过Java配置的方式进行Spring配置,并且实现Spring IOC功能.2.1) 创建工程以及导入依赖(Maven)…
Spring的Java配置方式是通过@Configuration和@Bean这两个注解来实现 @Configuration可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件. @Bean作用于方法上,其实就相当于xml配置文件中的bean,表示创建一个Bean,方法的返回值类型表示该Bean的类型,方法名表示该Bean的ID. 引用自:lujiangui 来源:CSDN 原文:https://blog.csdn.net/lujiangui/article/details/8…
@Configuration 和 @Bean 注解 带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源.@Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean. 例子如下: HelloWorld.java package com.how2java.w3cschool.baseonjava; public class HelloWorld…
SpringBoot拦截器中无法注入bean的解决方法 在使用springboot的拦截器时,有时候希望在拦截器中注入bean方便使用 但是如果直接注入会发现无法注入而报空指针异常 解决方法: 在注册拦截器时,将拦截器注入为bean 代码: @Configuration public class InterceptorRegister extends WebMvcConfigurerAdapter { //以这种方式将拦截器注入为一个bean,可以防止拦截器中无法注入bean的问题出现 @Bea…
今天被问到Spring中Bean的配置方式,很尴尬,只想到了基于XML的配置方式,其他的一时想不起来了,看来Spring的内容还没有完全梳理清楚,见到一篇不错的文章,就先转过来了. 以前Java框架基本都采用了XML作为配置文件,但是现在Java框架又不约而同地支持基于Annotation的“零配置”来代替XML配置文件,Struts2.Hibernate.Spring都开始使用Annotation来代替XML配置文件了:而在Spring 3.x提供了三种选择,分别是:基于XML的配置.基于注解…
spring Boot提倡约定优于配置,如何将类的生命周期交给spring 1.第一种自己写的类,Controller,Service. 用@controller @service即可 2.第二种,集成其它框架,比如集成shiro权限框架,集成mybatis分页插件PageHelper,第三方框架的核心类都要交于Spring大管家管理 @Configuration可理解为用spring的时候xml里面的<beans>标签 @Bean可理解为用spring的时候xml里面的<bean>…
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件,那么.xml文件又会非常多.总之这将导致配置文件的可读性与可维护性变得很低.2.在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率.为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java Bean紧密…
@Configuration可理解为用spring的时候xml里面的标签 @Bean可理解为用spring的时候xml里面的标签 Spring Boot不是spring的加强版,所以@Configuration和@Bean同样可以用在普通的spring项目中,而不是Spring Boot特有的,只是在spring用的时候,注意加上扫包配置 ,普通的spring项目好多注解都需要扫包,才有用,有时候自己注解用的挺6,但不起效果,就要注意这点. Spring Boot则不需要,主要你保证你的启动Sp…
1,@Configuration与@Bean   @Configuration: 告诉Spring这是一个配置类,配置类==配置文件. @Configuration==beans.xml @Bean: 给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id. @Bean 等价于 <bean></bean> 可以给@Bean设置value来修改id,比如@Bean("personAlias"). 可以在@bean中指定初始化和销毁方法 @Bean…
基本用途从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器.例如: @Configurationpublic class AppConfig { @Bean public MyBean myB…
@Configuration结合@Bean实现对象的配置 前提:最近项目中需要做支付接口,支付宝以及微信支付,本文并不介绍如何写支付接口,而是通过这个示例讲解配置应该怎么写,项目中使用的是Kotlin语言 众所周知:Spring中的注解分为两种:注册类 和 使用类,且Spring默认是单例模式,记住这两点很重要. (1)注册类包括:Controller.Service.Repository.Configuration.Component.Bean等,这些注解告知了Spring容器这些Bean的种…
Configuration以及Bean注解的使用 该知识点在Spring中应该学过,没有学过或者遗忘的的朋友需要预习或温习前置知识点.SpringBoot其实就是Spring的进一步简化,所以前置知识点还是有必要的学习的,这样更能明白其底层的原理. 好了,废话不多说,开始! 结构目录: pojo--User: package com.xbhog.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.No…
1.@Configuration.@Bean.@Import().@ImportResource().@Conditional 分析源码的时候总会见到标题中的这几个注解,因此:弄一篇博客来说明一下吧,方便分析源码 我的项目结构如下 源码说明如下 package cn.zixieqing.testannotation; import ch.qos.logback.core.db.DBHelper; import org.springframework.boot.autoconfigure.cond…
1.struts标签库中常用标签 使用myeclise标签可以自动注入,其中,前三个是经常使用的,主要的是logic标签 2.Bean标签 Bean标签主要用来定义和访问JavaBean,在Struts中提供了很多标签用于处理JavaBean,这些标签都定义在Struts-bean.tld文件中 2.1 <bean:define></bean:define>标签 通过<bean:define></bean:define>标签,定义两个字符串类型的属性,都保存…
1 什么是联合? 联合(Union)是一种特殊的类,一个联合中的数据成员在内存中的存储是互相重叠的.每个数据成员都在相同的内存地址开始.分配给联合的存储区数量是“要包含它最大的数据成员”所需的内存数.同一时刻只有一个成员可以被赋给一个值. 下面我们来看看C++中如何表达联合: // Code #01union TokenValue{    char _cval;    int _ival;    double _dval;}; 2 联合的内存布局与内存使用情况. 下面我们来考察一下TokenVa…
7.8 深入理解容器中的Bean 7.8.1 抽象Bean与子Bean 把多个<bean.../>配置中相同的信息提取出来,集中成配置模版------这个配置模版并不是真正的Bean,因此Spring不应该创建该配置模版,于是需要为该<bean.../>配置增加abstract=“true” ------这就是抽象Bean. 抽象Bean不能被实例化,Spring容器不会创建抽象Bean实例.抽象Bean的价值在于被继承,抽象Bean通常作为父Bean被继承. 抽象Bean只是配置…
       在项目中有时需要根据需要在自己new一个对象,或者在某些util方法或属性中获取Spring Bean对象,从而完成某些工作,但是由于自己new的对象和util方法并不是受Spring所管理的,如果直接在所依赖的属性上使用@Autowired就会报无法注入的错误,或者是没报错,但是使用的时候会报空指针异常.总而言之由于其是不受IoC容器所管理的,因而无法注入.         Spring提供了两个接口:BeanFactoryAware和ApplicationContextAwar…
今天使用freemarker中Configuration的setClassForTemplateLoading方法遇到了加载模板目录的一个小问题. 由于网上的其他论坛,博客写的有点乱,故记录一下. Freemarker是一个模板框架,主要是为了加快染速度而产生的.它与web容器无关,只要是关于模板生成一些代码的都可以使用它完成. 比如xml,Java代码的生成等. 其他类似的模板框架还有velocity. 本文主要讲的是Freemarker的加载模板目录问题,它的语法就不描述了.具体的语法可在官…
Spring MVC 了解WebApplicationContext中特殊的bean类型 Spring的DispatcherServlet使用了特殊的bean来处理请求.渲染视图等,这些特定的bean是Spring MVC框架的一部分.如果你想指定使用哪个特定的bean,你可以在web应用上下文WebApplicationContext中简单地配置它们.当然这只是可选的,Spring MVC维护了一个默认的bean列表,如果你没有进行特别的配置,框架将会使用默认的bean.下一小节会介绍更多的细…
一.spring实例化对象的方法 在Spring中,所有管理的对象都是JavaBean对象,而BeanFactory和ApplicationContext就是spring框架的两个IOC容器,现在一般使用ApplicationnContext,其不但包含了BeanFactory的作用,同时还进行更多的扩展. ApplicationContext 的主要实现类: 1.ClassPathXmlApplicationContext:从 类路径下加载配置文件. ApplicationContext co…
思路: 1.实现Spring的ApplicationContextAware接口,重写setApplicationContext方法,将得到的ApplicationContext对象保存到一个静态变量中,有了这个上下文对象,就可以在项目的任意地方用它来得到任意Bean; 2.调用applicationContext.getBeanDefinitionNames()方法就可以拿到Spring容器中所有的Bean名称;这里为了测试方便就直接在InitializingBean 接口的afterProp…
@Configuration和@Bean 1. 概述 @Configuration 注解标记在类上, 就像下面的配置文件. 我们将该类成为配置类. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSc…
有时候我们会出现无法用注解 @Autowired 注入bean的情况,这个时候可以 通过contextLoader获取 WebApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext(); BeanService beanService = (BeanService)ctx.getBean("beanID"); 这里的beanID为xml文件中对应的<bean id="beanID&qu…