spring的component autowired问题 望大神解惑

@component @autowired一个自动扫描 一个主动注入 问题1:加了这注解 还要到xml配置么问题2:具体是什么情况下用的啊 问题3:autowired要依赖component使用么 还是说可以单独使用

0

2个回答

@component是用在类定义上边的注解,@autowired是用在属性上的注解。

@Component
class A {
@Autowired
B b;
}

这个class B是需要用@Component注解的啊。

问题1:采用注解注入的话,xml里边就不要定义了。注解注入是3.x还是哪个版本加入的,可以大大简化bean(类)的定义配置xml文件。
需要在配置文件xml中,添加注解驱动那一句配置。
遇到过注解注入和xml配置bean混合使用,出现了一些问题,最后不太好解决,就都改成注解注入了。
当然,如果有一些初始化或者你自己定义的类,和其他类耦合较小的话,可以配置到xml里边的,建议用注解注入吧。比较简洁。
一点拙见

0
qq_27836205
Jordan裔 回复bjjoy2009: 好的 谢谢
2 年多之前 回复
bjjoy2009
bjjoy2009 回复Jordan裔: 嗯,可以这么说,最好自己配置一遍springMVC的工程,遇到问题,查书搜索就都明白了。按照那个链接教程,可能会比较顺利就做好了,没有啥意思
2 年多之前 回复
qq_27836205
Jordan裔 回复bjjoy2009: 是不是使用@autowired的前提是 对应对象的类中要有@component注解啊
2 年多之前 回复
bjjoy2009
bjjoy2009 回复Jordan裔: 不用在xml里边配置,@Component 是放在接口的实现类上的,class A implements IA{},IA是接口,A是实现类,在A上用@Component。同样在class B implements IB{},这个类定义上面用@Component。在A中定义@Autowired private IB b。在类定义上的注解都是可用@Component代替的,看例子http://blog.csdn.net/bjjoy2009/article/details/54386416
2 年多之前 回复
qq_27836205
Jordan裔 @Autowired在接口上 是不是要在xml配置该接口的实现类啊
2 年多之前 回复
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Spring——@Autowire冲突问题
Spring——@Autowire冲突问题 spring中使用@Autowire实现依赖注入。在使用的时候需要注意的是,满足注入条件的bean有多个的时候需要添加标识来区分目前需要注入的是哪个bean。 好,下面上货: 1、新建一个maven项目 mvn archetype:generate -DarchetypeCatalog=internal 2、修改pom文件
spring注解中的@Autowired和@Component基本作用
1.我们在初次写spring的demo程序的时候,一定会觉得很繁琐,我要用一个类,直接new不就行了么,搞这么麻烦? 但是当我们用的稍微多了些的时候,就会发现,当我们需要的对象很多的时候,管理这些对象很复杂,很麻烦!!   所以,spring框架给了我们很好的方法去简化操作,@Autowired和@Component简直就是一对兄弟搭档   2.  @Autowired 作用:@A...
spring boot 注释了@Component 之后,可以用构造函数传递参数,但是@Autowired 自动失效
附图: @Autowired  要放在前面传递变量过来的类中
@Autowired注解注入和构造器的先后顺序关系,springMVC controller层抽公共类的时候遇到的问题
场景:IBaseSrvice属性是一个接口,其有两个子接口IEmpService(实现类EmpServiceImpl),ICustomerService(实现类CustomerServiceImpl)目的:想在构造器构造之前把IEmpService完成注入然后传递给IBaseSrvice,结果失败,super.setIbs(ies)为null值。结论:@Autowired的注入是构造器完成之后。翻...
【Spring注解】——生命周期以及自动装配
    本文主要讲解一下配合spring注解讲解spring中bean的生命周期和自动装配涉及到一些注解,如有理解偏颇之处,恳请各位大神指正。容器管理bean的生命周期bean的生命周期     bean创建——初始化——销毁过程--> Spring IOC容器实例化Bean --> 调用BeanPostProcessor的postProcessBeforeInitialization...
spring4 解决@Autowired为null的某种方式
问题背景 在开发业务系统过程中,需要使用工作流,因为可能会使用第三方工作流和自己的工作流,因此在业务系统SERVICE层使用了简单工厂调用工作流(可以方便工作流来回切换),但是由于对Spring了解不透彻,在业务系统SERVICE层使用了new创建工作流实例,在new出来的工作流实例中标注Autowired注解的类无法注入。 解决思路 spring无法扫描到上面说的new创建的工
关于@Autowired后Spring无法注入的问题
在使用Spring框架开发的时候,难免有时会遇到@Autowired后无法自动主动,然后报空指针异常的错,下面说一下本人遇到的问题和解决办法. 1.对于新手来说,最明显的不过是在applicationContext.xml文件上没有加<context:component-scan base-package="com.xxx"/>,或者明明写了,但Spring还是没有将该类注入到容器中...
@Autowired在没有加注解的类里面无法生效
如果一个类没有加注解如@component, @controller, @service等扫描这个类到容器中 在类中的变量加@Autowired注解无法生效。 因为如果一个类new对象生成的,那么这个类就不归spring容器管理,IOC等spring的功能也就无法使用了。 ...
springboot @Autowired注入空指针问题
问题1注解扫描的包不在同一包下  即@Controller标注的类所在的包 和 @Autowired标注的类所在的包 不在同一包下解决方式:1 . 更改包名 使两个类在同一包下2 . 在启动类上,使用注解@ComponentScan(basePackages = { "com.xxx" })问题2@Servicepublic class ProcessStarter {    @Autowired...
Spring中使用@Autowired注解 对象是null
今天在做一个SSH集成的项目,但是在测试的时候,我在一个测试代码中使用了@AutoWired注解,想要从Spring配置文件中自动注入一个已经配置好的bean对象,但是在使用的时候却发现是Null,于是下面就是解决办法。 首先上错误代码: 我在一个测试类中创建了一个该类的对象,并调用该类的doLogin()方法,然后输出的内容是如图: 可以看到,它确实已经进行过注入的操作了,且可以发...
@Component,@service,@autowired等注解的实现原理
默认情况下bean Name的默认生成策略; @component @service @Controller @Respository 入口肯定是BeanNameGenerator接口声明的generateBeanName(BeanDefinition,BeanDefinitionRegistry)方法,该方法做了一个分类判断,处理AnnotationBeanDefinition和Defau...
SpringBoot解决@Component无法注入其他Bean
一、现象 在SpringBoot新new一个普通类,习惯性添加@Component让Spring扫描。 在@Component修饰的类里注入了其他Bean,运行时提示注入的为null 但这个Bean可以在控制层被引入,在普通类就不行。   二、解决 找了些资料,最后也没解决注入的问题。 最后的方案就是去掉@Component注解,在new这个普通类时从Spring上下文实例中取出这个...
spring boot 中使用@Autowired注入服务 服务为空没有注入成功
第一次参与spring boot框架的项目。在controller类中使用@Autowired注解注入服务,使用postman请求controller接口时,报控制针异常,打开debug调试发现,注入的服务失败,为null.在网上找了下原因,说是spring boot配置扫描路径时没有扫描到注入服务,查看了下@ComponentScan注解配置的扫描路径,没有问题。而且项目中别人的Controll...
解决SpringBoot的@Autowired无法注入问题
问题:@Autowired无法自动注入 思路:SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!“Application类”是指SpringBoot项目入口类。这个类的位置很关键:推荐放把启动类放在com.example下(如下图),不要放在java下。 解决:在启动类上加注解 @ComponentScan("com.example") ...
spring boot 中在@Component组件中service 无法注入问题
spring boot 中在@Component组件中service 无法注入问题 一、知识点 @controller 控制器(注入服务):用于标注控制层,相当于struts中的action层; @service 服务(注入dao):用于标注服务层,主要用来进行业务的逻辑处理; @repository(实现dao访问):用于标注数据访问层,也可以...
JAVA SSM----自动装配@Autowired,类注解@Component,类id生成策略,面向接口编程
package Test; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import org.junit.Test; import org.springframework.beans.factory.FactoryBean; import org.springframework.b...
Spring Annotation (注解)详解
关于Spring annotation的详细介绍,包括 @Component,@Autowired 等,感觉还不错。
Spring @Autowired注入为 null 的原因总结
原因 配置缺失,比如为开启注解扫描驱动、注入组件为注册; 使用 new 关键字创建的对象不受spring容器管理,无法注入; 注入静态变量, 静态变量/类变量不是对象的属性,而是一个类的属性,spring则是基于对象层面上的依赖注入。 静态注入的三种方式 在一些工具类中可能会依赖 service 层的对象,一般情况下工具类都是使用静态方法,对应的成员变量也需要声明为静态的,此时如果直接使用 @...
springboot多模块项目不同模块组件不能@autowired问题
maven-springboot多模块项目不同模块组件不能@autowired 解决方案: 在启动类上加上扫包范围: @SpringBootApplication(scanBasePackages = "com.tucker") public class SecurityBrowserApplication { public static void main(String[] args)...
Spring注入单例模式问题
Spring默认单例模式自然不用多说,作为开发人员肯定对“慎用全局变量”这个经典都“耳熟能详”,但是真正在开发中却未必会注意到这个问题,只有真能遇到过才能理解的更深刻。        前段时间迁移架构,迁移完成后需要把代码结构更改以符合文档需要,其实个人觉得就是为了美观,麻烦的还是开发人员。 下面是迁移后的代码结构: /*原始参数集合*/ private Map<String...
Spring属性注入之有参构造函数
Spring通过有参构造函数的方式可以实现属性注入1.需要进行属性注入的类package com.maty.property; /** * @author maty e-mail:512181558@qq.com * @version 创建时间:2018年5月16日 下午12:14:50 * 类说明 该类用来练习如何使用有参数的构造函数进行参数注入 */ public class Pro...
Spring开发 注解 @Resource与@Autowired用法区别
**spring中,@Resource和@Autowired都是做bean的注入时使用。使用过程中,有时候 @Resource 和 @Autowired可以替换使用;有时,则不可以。 下面,根据自己的学习,整理下这两个注解使用中的共同点和不同点,及用法上的不同。 共同点 @Resource和@Autowired都可以作为注入属性的修饰,在接口仅有单一实现类时,两个注解的修饰效果相同,可...
深入理解@Autowired注解以及Spring加载Bean的机制
@Autowired注解在平时开发中用的非常的多,即自动装配,这些天碰到了一个与之相关的报错,所以打算深入理解其原理。 首先看看它的定义如下:这里提一下它上面有三个元注解: 1、@Target表示这个注解是作用在什么上,方法上还是类上还是参数上等等。 2、@Rentention 可以理解为这个注解的生命周期,RententionPolicy.SOURCE、RententionPolicy....
@Autowired 注入爆红(无法注入)
比较常见的四种原因:(先查看各个配置文件是否爆红) 1如果使用注解配置 service 层 可能缺少了注解 (@Service) 2如果用xml 配置 是否写了定义 3注解正确的情况下:检查扫描包路径是否正确。 (检查各自组件的自动扫描组件<context:component-scan base-package = “XXXX”) 或者(Spring自动扫描context:annotat...
spring项目中多线程@Autowire注入null的解决方案
很多时候,需要在多线程中使用业务层的方法实现自己的逻辑,但是多线程是防注入的,所以只是在多线程实现类中简单的使用@Autowired方法注入自己的Service,会在程序运行到此类调用service方法的时候提示注入的service为null。所以这里给出两种解决方案: 1.将需要使用的service当做多线程实现类的一个属性参数(也就是构造的时候当做参数或者没有构造的话使用set方法),然后在...
单例模式工具类中Spring 注入为空 的一些小问题
今天在开发项目组遇到了一个奇怪的问题。 一、现象 共通工具类中使用饿汉单例模式创建对象。 public class DemoManager { @Autowired private RedisUtil redisUtil; private static DemoManager instance = null; public static DemoMan...
springBoot @Autowired注入对象为空原因总结
BankDAO类内容如下: package com.wiseco.engine.dao; Controller中内容: cacheTableMap.get(tableName)值为:com.wiseco.engine.dao.BankDAO 结果调用controller执行refreshCache函数时报空指针异常,通过debug模式跟踪发现以下地方cacheJob对象是null。 分析后...
解决 SpringMVC 非spring管理的工具类使用@Autowired注解注入DAO为null的问题
有时候在工具类中需要要操作数据库,即需要注入springMVC中的DAO层,但是此时工具类并非spring管理,所以使用@Autowired注入会报空指针异常,在试了好多方案都不行时,找到了比较适合springMVC的解决方法:(1)在配置文件(springmvc.xml)中加入工具类所在包的扫描配置。(2)使用@Component注解将工具类声明为spring组件,并静态初始化。代码截取:@Co...
SpringBoot学习——@Autowired自动注入报:could not be found问题的理解和解决方案
微服务应用程序中,我们会通过Java后台的方式发送http请求并调用其他注册在Spring Cloud Eureka server上的微服务,之前我们可能会手动封装一个Http发送请求类,然后通过其中的sendGet或者sendPost方法借由java IO的形式发送出去。 但是,上述方法过于繁琐和和臃肿,我们使用org.springframework.web.client.RestTempla...
spring cloud 拆分项目时@autowired 怎么也注入不进来
在公司闲暇时间把公司的项目拆分:让controller层做消费者,service层大包为jar添加依赖,实现和数据库层做生产者,eureka做服务注册,其他的rcsssCloud-security、rcsssCloud-utils、rcsssCloud-model、rcsssCloud-config、打包为jar作为服务依赖。 经过一天的拆分过后,生产者能够正常的启动,但是消费者,@autowi
使用@Autowired 报空指针解决方案
使用@Auarowired时程序报空指针。如图:
junit单元测试时spring的@Autowired注入为空
在测试类上添加以下注释,测试时自动创建Spring的应用上下文: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:beans.xml" })或者@ContextConfiguration("classpath:beans.xml") —————————————————...
@Autowired的顺序是怎样执行的?
一、问题 问题;Spring3中在Bean中多个属性,多个方法@Autowired的顺序是怎样执行的? Demo [java] view plaincopy @Component public class MyBean { @Value("#{properties['security.token.default']}") private S...
解决@FeignClient注入service失败问题
在入口类上方加入注解@EnableFeignClients(basePackages = {"com.ritoinfo.framework.evo.sp.sys.api","com.yqjr.sp.eco.member"})由于使用pom引入service jar包,如果不加basePackage,会找不到包所在路径...
Spring常用注解以及注解注入contextcomponent-scan详解
1. 首先让我们来看分析下Spring注解@Component、@Repository、@Service、@Controller区别 spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。 在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,
Spring学习6(5):FactoryBean及使用注解配置
Spring学习6(5) FactoryBean  Spring通过反射机制利用<bean>的class属性来指定实现类的方法在Bean的实例化过程较为复杂时会增加编码繁琐度。故此Spring提供了一个org.springframework.beans.factory.FactoryBean工厂类接口,用户可以通过实现该工厂类接口定制实例化Bean的逻辑。  在spring3.0以后,...
@Component注解和@Configuration注解的之间的区别
直白的说Component包含了Configuration的所用注解:Configuration和Component都是注解在类上的,Configuration类中的方法成员变量是@Value注解,方法上的注解是@BeanComponent类中的方法和成员变量没有任何限制...
解决@Autowired注入依赖失败的问题
1、现象描述:    在Spring Boot项目中使用@Autowired注解,程序启动时发现服务启动失败,提示: Description: Field metrics in com.be.fallback.servlet.FallbackServlet required a bean of type 'com.be.fallback.metrics.FallbackMetrics' t...
Springboot中使用aop导致@Autowired全部注入失败
下文略啰嗦,直接讲重点: aop只能适用于 protect 和public 修饰符修饰的方法 我们使用的Springboot版本号是1.5.9.RELEASE,因为同事写代码不规范导致的BUG 因为系统新的需求,所以需要做AOP日志啥也不说,一顿疯狂的引入 <dependency> <groupId>org.springf...
Idea 的@Autowired标红报错
1.在所在的类DAO层加注解@Repository @Repository public interface UserDao { ... } 2.在spring的XML 配置文件中启动 Spring 的自动扫描功能 context:component-scan base-package="org.test.dao" />