使用什么注解注入配置文件属性|SpringBoot项目使用@PropertySource注解加载properties配置文件但输出对象值为null

|

Ⅰ SpringBoot项目使用@PropertySource注解加载properties配置文件,但输出对象值为null

不是要加上前缀?@ConfigurationProperties(prefix = "Example")@PropertySource("classpath:my.properties")//这是属性文件路径

Ⅱ Spring注入方式以及注解

使用方法:(classpath路劲查找) 默认会去 classPath 路径下找。classPath 路径指的就是编译后的 classes 目录。 使用方法(项目路径或者相对路径) 默认是去项目的路径下加载,可以是相对路径,也可以是绝对路径,若是绝对路径,“file:” 前缀可以缺省。 构造注入三种方式标明方法中的参数: 1.type 根据数据类型 2.index 根据顺序 3.name 根据参数名 仍保留集合了特性。 autowire属性设置自动组装参数 @Component:表明该类会作为组件 类,并告知Spring要 为这个类创建bean。 @ComponentScan:启用组件扫描, 默认当前配置类 所在包为基础包。 basePackages : 基础包 basePackageClasses: 指定类所在包为基础包 @Primary:(一 般与@Component 配合使用)在自动装配时,设置 某个bean为首选。 @Autowired:自动注入一个符 合类型要求的 bean required: 是否为必须注入项。 @Qualifier:指定所注入的 bean的ID value: 所注入的bean的ID @Scope:定义bean的作用域。 @Configuration:定义Spring配置类 @Bean:声明配置该方法所 产生的对象为 Spring中的bean @Import:导入其他配置类 @ImportResouce:导入其他XML配置文件

Ⅲ Spring 常用注解大全

@Controller:组合注解(组合了@Component注解),应用在Controller层(控制层)。 @Service:组合注解(组合了@Component注解),应用在Service层(业务逻辑层)。 @Reponsitory:组合注解(组合了@Component注解),应用在Dao层(数据访问层)。 @Component:表示类是一个“组件”,成为Spring管理的Bean。同时@Component还是一个元注解。 @Autowired:Spring提供的工具(由Spring的依赖注入工具BeanPostProcessor或BeanFactoryPostProcessor自动注入)。 @Resource:JSR-250提供的注解。 @Inject:JSR-330提供的注解。 @Configuration:声明当前类是一个配置类(相当于一个Spring配置文件)。 @ComponentScan:自动扫描指定包下所有使用@Service,@Component,@Controller,@Repository的类并注册。 @Bean:注解在方法上,声明当前方法的返回值为一个Bean。返回的Bean对应的类中可以定义init()方法和destroy()方法,然后在@Bean(initMethod=”init”, destroyMethod=”destroy”)定义,在构造之后执行init,在销毁之前执行destroy。 @Aspect:声明一个切面。 @After:后置建言(advice),在原方法前执行。 @Before:前置建言(advice),在原方法后执行。 @Around:环绕建言(advice),在原方法执行前执行,在原方法执行后再执行。 @PointCut:声明切点,即定义拦截规则,确定有哪些方法会被切入。 @Transactional:声明事务(一般默认配置即可满足要求,当然也可以自定义)。 @Cacheable:声明数据缓存。 @EnableAspectJAutoProxy:开启Spring对AspectJ的支持。 @Value:值得注入。经常与Sping EL表达式语言一起使用,注入普通字符,系统属性,表达式运算结果,其他Bean的属性,文件内容,网址请求内容,配置文件属性值等。 @PropertySource:指定文件地址。提供了一种方便的、声明性的机制,用于向Spring的环境添加PropertySource。与@Configuration类一起使用。 @PostConstruct:标注在方法上,该方法在构造函数执行完成之后执行。 @PreDestroy:标注在方法上,该方法在对象销毁之前执行。 @Profile:表示当一个或多个指定的文件是活动的时,一个组件是有资格注册的。使用@Profile注解类或者方法,达到在不同情况下选择实例化不同的Bean。@Profile(“dev”)表示为dev时实例化。 @EnableAsync:开启异步任务支持。注解在配置类上。 @Async:注解在方法上表示这是一个异步方法,在类上表示这个类所有的方法都是异步方法。 @EnableScheling:注解在配置类上,开启对计划任务的支持。 @Scheled:注解在方法上,声明该方法是计划任务。支持多种类型的计划任务:cron,fixDelay,fixRate。 @Conditional:根据满足某一特定条件创建特定的Bean。 @Enable*:通过简单的@Enable*来开启一项功能的支持。所有@Enable*注解都有一个@Import注解,@Import是用来导入配置类的,这也就意味着这些自动开启的实现其实是导入了一些自动配置的Bean。 @RunWith:这个是Junit的注解,SpringBoot集成了junit。一般在测试类里使用:@RunWith(SpringJUnit4ClassRunner.class) — SpringJUnit4ClassRunner在JUnit环境下提供Sprng TestContext Framework的功能 @ContextConfiguration:用来加载配置ApplicationContext,其中classes属性用来加载配置类:@ContextConfiguration(classes = {TestConfig.class(自定义的一个配置类)}) @ActiveProfiles:用来声明活动的profile–@ActiveProfiles(“prod”(这个prod定义在配置类中)) @EnableWebMvc:用在配置类上,开启SpringMvc的Mvc的一些默认配置:如ViewResolver,MessageConverter等。同时在自己定制SpringMvc的相关配置时需要做到两点:1:配置类继承WebMvcConfigurerAdapter类,2:就是必须使用这个@EnableWebMvc注解。 @RequestMapping:用来映射web请求(访问路径和参数),处理类和方法的。可以注解在类和方法上,注解在方法上的@RequestMapping路径会继承注解在类上的路径。同时支持Serlvet的request和response作为参数,也支持对request和response的媒体类型进行配置。其中有value(路径),proces(定义返回的媒体类型和字符集),method(指定请求方式)等属性。 @ResponseBody:将返回值放在response体内。返回的是数据而不是页面 @RequestBody:允许request的参数在request体中,而不是在直接链接在地址的后面。此注解放置在参数前。 @PathVariable:放置在参数前,用来接受路径参数。 @RestController:组合注解,组合了@Controller和@ResponseBody,当我们只开发一个和页面交互数据的控制层的时候可以使用此注解。 @ControllerAdvice:用在类上,声明一个控制器建言,它也组合了@Component注解,会自动注册为Spring的Bean。 @ExceptionHandler:用在方法上定义全局处理,通过他的value属性可以过滤拦截的条件:@ExceptionHandler(value=Exception.class)–表示拦截所有的Exception。 @ModelAttribute:将键值对添加到全局,所有注解了@RequestMapping的方法可获得次键值对(就是在请求到达之前,往model里addAttribute一对name-value而已)。 @InitBinder:通过@InitBinder注解定制WebDataBinder(用在方法上,方法有一个WebDataBinder作为参数,用WebDataBinder在方法内定制数据绑定,例如可以忽略request传过来的参数Id等)。 @WebAppConfiguration:一般用在测试上,注解在类上,用来声明加载的ApplicationContext是一个WebApplicationContext。他的属性指定的是Web资源的位置,默认为src/main/webapp,我们可以修改为:@WebAppConfiguration(“src/main/resources”)。 @EnableAutoConfiguration:此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。该注解组合了@Import注解,@Import注解导入了类,它使用SpringFactoriesLoader.loaderFactoryNames方法来扫描具有META-INF/spring.factories文件的jar包。而spring.factories里声明了有哪些自动配置。 @SpingBootApplication:SpringBoot的核心注解,主要目的是开启自动配置。它也是一个组合注解,主要组合了@Configurer,@EnableAutoConfiguration(核心)和@ComponentScan。可以通过@SpringBootApplication(exclude={想要关闭的自动配置的类名.class})来关闭特定的自动配置。 @ImportResource:虽然Spring提倡零配置,但是还是提供了对xml文件的支持,这个注解就是用来加载xml配置的。例:@ImportResource({“classpath @ConfigurationProperties:将properties属性与一个Bean及其属性相关联,从而实现类型安全的配置。例:@ConfigurationProperties(prefix=”authot”, locations={“classpath @ConditionalOnBean:条件注解。当容器里有指定Bean的条件下。 @ConditionalOnClass:条件注解。当类路径下有指定的类的条件下。 @ConditionalOnExpression:条件注解。基于SpEL表达式作为判断条件。 @ConditionalOnjava:条件注解。基于JVM版本作为判断条件。 @ConditionalOnJndi:条件注解。在JNDI存在的条件下查找指定的位置。 @ConditionalOnMissingBean:条件注解。当容器里没有指定Bean的情况下。 @ConditionalOnMissingClass:条件注解。当类路径下没有指定的类的情况下。 @:条件注解。当前项目不是web项目的条件下。 @ConditionalOnResource:条件注解。类路径是否有指定的值。 @ConditionalOnSingleCandidate:条件注解。当指定Bean在容器中只有一个,后者虽然有多个但是指定首选的Bean。 @ConditionalOnWebApplication:条件注解。当前项目是web项目的情况下。 @EnableConfigurationProperties:注解在类上,声明开启属性注入,使用@Autowired注入。例:@EnableConfigurationProperties(HttpEncodingProperties.class)。 @AutoConfigureAfter:在指定的自动配置类之后再配置。例:@AutoConfigureAfter(WebMvcAutoConfiguration.class)。 转自:https://www.cnblogs.com/alter888/p/9083963.html

Ⅳ 注解@component定义的bean 怎么 注入 xml定义的bean

在spring中,不管是使用xml还是使用注解,实质上都是为spring容器提供bean的定义信息。而spring容器能够成功启动的三大重要因素是:Bean定义信息、Bean实现类、以及spring本身。如果采用XML配置Bean,那么Bean实现类和Bean定义信息是分离的,如果是用注解,那么Bean的定义信息和实现类都是在一起的,表现在Bean实现类的注解上。

下面是一个简单的层的bean注解配置:

在spring中,不管是使用xml还是使用注解,实质上都是为spring容器提供bean的定义信息。而spring容器能够成功启动的三大重要因素是:Bean定义信息、Bean实现类、以及spring本身。如果采用XML配置Bean,那么Bean实现类和Bean定义信息是分离的,如果是用注解,那么Bean的定义信息和实现类都是在一起的,表现在Bean实现类的注解上。下面是一个简单的层的bean注解配置:

在UserDao中使用@Component注解对其进行标注,它会被Spring容器识别,然后自动转换成能被容器管理的Bean。它等效于一下的XML配置:

<beanid="userDao"class="cn.qing.spring..UserDao"/>

除了@Component注解外,Spring还提供了3个功能和@Component基本等效的注解,它们分别用于对DAO、service、及web层的controller进行注解,也称这些注解为Bean的泛型注解。

@Repository:用于对实现类进行标注。

@Service:用于对service层实现类进行标注。

@Controller:用于对web的控制层实现类进行标注。

之所以在@Component注解之外又定义3个注解,是为了让注解类本身的用途清晰化。此外spring将赋予它们特殊的功能,所以推荐使用特别的注解标注特定的Bean.

只是在Bean的实现类上添加上以上注解还是不够的,spring并不会自动扫描出这些带注解的类并将其转换成Bean,所以需要在spring的配置文件中配置spring需要扫描的包,使用下面的<context:component-scan />标签进行配置:

<!–在使用注解时,在此配置spring要扫描加载的bean的basepackage–><context:component-scanbase-package="cn.qing.spring"/>

自动装配Bean:

@Repository("userDao")publicclassUserDao{@AutowiredprivatePersonInfopersonInfo;publicvoidprintPersonInfo(){System.out.println("personInfo:"+personInfo.toString());}

上面的personInfo对象是使用@Autowired注解进行注入。

使用@Autowired注解进行bean属性的自动注入,等同于下面的XML配置:

<propertyname="personInfo"ref="personInfo"/>

而且使用@Autowired注解不需要为要注入的属性对象提供setter和getter方法,@Autowired注解是按照类型进行装配的,在运行时spring查找容器中匹配的bean,当有且只有一个匹配的bean时,spring将其注入到由@Autowired配置的变量中。在使用@Autowired注解是可以结合@Qualifier注解一起使用,@Qualifier注解是用来指定注入Bean的名称,如果指定的名称在spring中不存在,spring容器会报错。

@Repository("userDao")publicclassUserDao{@Autowired@Qualifier("personInfo")privatePersonInfopersonInfo;

使用注解配置bean的作用范围:

通过注解配置的bean和通过<bean>标签配置的Bean一样,默认的作用范围都是singleton,在使用注解配置scope的时候,spring提供的注解是@Scope,它可以显示指定bean的作用范围。

@Scope("prototype")@Repository("userDao")publicclassUserDao{@Autowired@Qualifier("personInfo")privatePersonInfopersonInfo;

上面的代码使用@Scope注解将bean的作用范围设置为prototype,这样每次spring容器都返回一个新的bean实例。在xml中配置bean时,可以设置bean的init-method属性和destroy-method属性来配置bean的初始化和销毁时执行的方法,spring支持java中提供的注解:@PostConstruct和@PreDestroy来设置初始化和销毁bean时的方法。

<spanstyle="white-space:pre"></span>@PostConstructpublicvoidinitMethod(){System.out.println("thisisinitmethod!");}@PreDestroypublicvoiddestroyMethod(){System.out.println("thisisdestroymethod.");}

值得说明的是,当使用@PostConstruct和@PreDestroy注解配置Bean时,可以有多个对应的方法,spring在执行的时候也会把设置过这两个注解的所有方法都执行。

Ⅳ spring配置文件怎么定义resource类型的属性

注解,或者@Resource,@Qualifier,@PostConstruct,@PreDestroy等注解来实现。1.1. 使用注解以前我们是怎样注入属性的类的实现:[java] view plain print?public class UserManagerImpl implements UserManager { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } … } 配置文件:[xml] view plain print?<bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl"> <property name="userDao" ref="userDao" /> </bean> <bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl"> <property name="sessionFactory" ref="mySessionFactory" /> </bean> 1.2. 引入@Autowired注解(不推荐使用,建议使用@Resource)类的实现(对成员变量进行标注)[java] view plain print?public class UserManagerImpl implements UserManager { @Autowired private UserDao userDao; … } 或者(对方法进行标注)[java] view plain print?public class UserManagerImpl implements UserManager { private UserDao userDao; @Autowired public void setUserDao(UserDao userDao) { this.userDao = userDao; } … } 配置文件[xml] view plain print?<bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl" /> <bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl"> <property name="sessionFactory" ref="mySessionFactory" /> </bean> @Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。以上两种不同实现方式中,@Autowired的标注位置不同,它们都会在Spring在初始化userManagerImpl这个bean时,自动装配userDao这个属性,区别是:第一种实现中,Spring会直接将UserDao类型的唯一一个bean赋值给userDao这个成员变量;第二种实现中,Spring会调用 setUserDao方法来将UserDao类型的唯一一个bean装配到userDao这个属性。1.3. 让@Autowired工作起来要使@Autowired能够工作,还需要在配置文件中加入以下代码[xml] view plain print?<bean class="org.springframework.beans.factory.annotation." /> 1.4. @Qualifier@Autowired是根据类型进行自动装配的。在上面的例子中,如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出 BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。a. 可能存在多个UserDao实例

Ⅵ spring注解是怎么实现的

在使用Spring的IOC功能的时候,Spring提供了集中注入方式:属性注入,构造函数注入和工厂方法注入,更多的时候是使用的属性注入,即set方法注入。使用set方法注入要求在写bean的配置文件的时候,需要我们手动设置properties。

Ⅶ spring autowired怎么按照name注入

1、根据图示代码这里创建一个Car的一个类,这个类中定义了四个属性,重写了toString方法。

Ⅷ spring properties配置文件怎么注入

org.springframework.beans.factory.config.类,可以方便我们使用注解直接注入properties文件中的配置。

Ⅸ 了解下Spring依赖注入几个常用注解

开发中经常用到的注解有以下几个: ①:@Autowired:是(JSR-330)javax.inject.inject的替代形式,实现Spring依赖注入的一种形式,可以装配对象,设置对象依赖,注入Setter方法,找到多个Bean对象时需要用@Qualifier限定使用哪个Bean。 使用示例: 方式1: 备注:required=true代表依赖是必须的,false代表依赖不是必然的。 方式2: 备注:当存在多个Bean实例时@Qualifier起到指定候选Bean的作用。 如何注入对象的同时再设置被注入对象的属性值。 可以有三种形式,作用都一样,只不过其代理实现机制不一样而已。 源码分析: @Autowired由实现,它里面有两个重要的内部类,AutowiredFieldElement和AutowiredMethodElement,这两个类都继承自InjectionMetadata.InjectedElement,并重写了inject(注入方法),这两个类的作用一个是注解在属性字段的注入,另一个是注解在方法上的注入。 简单说一下这个类里面的其他方法是做什么用的。 Method:findAutowiringMetadata->找到所有装配的元数据 Method:registerDependentBeans ->将指定的Bean注册它的依赖Bean(比方说;xxService注册到xxController中去) ②:@Resource:资源标记注解,由J2EE提供的注解(javax.annotation.Resource)。当组件初始化时,容器将向应用程序组件注入请求资源的实例。重点就是:标记应用程序所需的资源,资源在Spring中可能以Component,Service,以@Bean注入形式等。@Resource默认是ByName方式注入资源。 特性:支持byName,byType多种形式。 @Resource注解核心实现实在类中实现的,我们就简单说一下这个类针对Resource做了什么用。 通过查看源码得出,里面有一个内部类:ResourceElement,还有一个重要方法:buildResourceMetadata->构建ResourceMetaData(Resource元素据) @Resource和@Autowired的相同点: ①:都是注解形式,都可以用来依赖注入,都可以以配置在属性上的形式依赖一个Bean,也可以以Setter形式注入一个Bean.两者的注入形式都可以被javax.inject.Inject注解取代。 ②:两者都依赖于Spring上下文,都需要先获取BeanFacotry之后,再由BeanFactory去解析Bean,装配Bean等动作。 ③:他们俩都可以配置延时加载(以@Lazy配置使用,这样做时用到时才会装配,才会报错,与懒加载是一层意思。 @Resource和@Autowired的不同点: ①:来源不同,@Resource是J2EE里面的注解,不依赖于Spring. @Autowired是来自于Spring-Beans里面的注解,必须在Spring容器中才能使用,并依赖于Spring上下文。 ②:使用的范围@Resource比@Autowired更广泛,@Resource除了ByType之外还可以ByName。@Resource指定name时相当于@Autowired与@Qualifer组合使用. ③:@Resource可以设置一定的容错性,可以配置lookUp,可以指定Type来装配。

Ⅹ spring常用注解汇总

1.用于创建对象的注解:相当于xml配置文件中的         *1.1 @Component                  作用: 把资源让spring来管理,相当于在xml中配置一个bean                   属性:                             value:指定bean的id,如果不指定value属性,默认bean的id为当前类的类名,首字母小写。         *1.2 @Controller、@Service、@Repository                    这三个注解都是@Component注解的衍生注解,他们的作用及属性都是一样的。                    他们只不过提供了更加明确的语义化:                           @Controller:一般用于表现层。                           @Service:一般用于业务层。                           @Repositor:一般用于持久层。         *1.3 注意:如果注解中有且只有一个属性要赋值时,且名称是value时,value可以不写 2.用于注入数据的注解:相当于xml配置文件中的:、         *2.1 @Autowired              *作用:自动按照类型注入。当时用注解注入时,set方法可以省略。它只能注入其他bean类型,当有多个                           类型匹配时,使用要注入的对象的变量名称作为bean的id,在spring容器中查找,找到相同的则注                           入成功,否则报错。         *2.2 @Qualifier                 作用:                         在自动按照类型注入的基础上,在按照bean的id注入,它在给字段注入时不能单独使用,必须和                            @Autowired一起使用,在给方法参数注入时,可以独立使用。                 属性:                         value:指定bean的id         *2.3 @Resource                 作用:                         直接按照bean的id注入,它只能注入其他bean类型                 属性:                          name:指定bean的id         *2.4 @Value                 作用:                          注入基本数据类型和String类型的数据                 属性:                          value:用于指定值。 3.用于改变作用范围的注解:相当于xml配置文件中的:         *@Scope             作用:                     指定bean的作用范围             属性:                     value:                         指定范围的值                              1.singleton(默认):单例的                              2.prototype:多例的                              3.request                              4.seeeion                              5.globalsession                                      4.和生命周期相关的注解:相当于xml配置文件中的:         [email protected]:                 用于指定初始化方法         [email protected]:                 用于指定销毁方法      [email protected]             *作用:指定当前类是一个配置类             *细节:当配置类作为对象创建的参数时,该注解可以不写。      2.ComponentScan            *作用:用于通过注解指定spring在创建容器时要扫描的包            *属性:                value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。                       我们使用此注解就等同于在xml中配置了:                       <context:component-scan base-package="com.itheima"></context:component-scan>      3.Bean            作用:                 用于把当前方法的返回值作为bean对象存入spring的ioc容器中            属性:                name:用于指定bean的id。当不写时,默认值是当前方法的名称            细节:                当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象。                查找的方式和Autowired注解的作用是一样的      4.Import            作用:用于导入其他的配置类            属性:                value:用于指定其他配置类的字节码。                            当我们使用Import的注解之后,有Import注解的类就是父配置类,而导入的都是子配置类      5.PropertySource            作用:用于指定properties文件的位置            属性:                value:指定文件的名称和路径。                            关键字:classpath,表示类路径下


赞 (0)