@autowired写在成员变量上和set方法上的区别?

javaPie javaPie     2022-12-07     113

关键词:

@Autowired写在成员变量上和set方法上的区别?

今天项目上遇到一个问题,service是普通的类,非接口实现类,如下
@Service
@Transactional
@OALogger
public class ArchiveSortManager
..........

_______________________________
这样居然会报错
private ArchiveSortManager sortManager;

@Autowired
public void setSortManager(ArchiveSortManager sortManager)
this.sortManager = sortManager;


而如下这样注入却正常
@Autowired
private ArchiveSortManager sortManager;

求解
关注者 6 被浏览 3634

3 个回答

Hello hell 思而不学则殆

菜鸡,如有错误,希望能指正

参照:

spring @Autowire property vs setter

写在成员变量上就是spring通过读取xml配置返回一个bean

只写在set方法上就是spring通过读取xml配置返回一个bean,然后将其注入你的成员变量

编辑于 2017-03-28 贾凯强 不愿做民工 我是菜鸟啊,如果用set方法了,就不用@Autowired了,这两者是实现同样的功能,只不过@Autowired是交给spring容器来注入了,如果是service推荐使用@Autowired的方式,由spring来管理,如果是普通对象就用 set get方法。因为如果用struts2话,它会搜集action中所有set方法的对象,转换为json对象(如果用到的话),但是像service这种经过spring管理的是复杂对象,就会报错。你用了@Service去注解它,他就不再是简单对象了。它貌似继承或实现了其他类或借口(我也忘了)。你的第一种方式我还没见过。再说一遍,本人菜鸟 发布于 2014-06-19 自信 无业游民

写在方法上,可以通过java代码对数据进行控制(就好像你普通的代码一样)

写在属性上,相当于写个=号赋值,他们并没有性能或其他区别,作用是一样的,只看你的习惯。

我一般会写在属性上,因为更简洁,但如果要对其进行一些操作,可以写在方法上也没问题


@autowired写在构造方法上(代码片段)

引自:@Autowired推荐对构造函数进行注释   在编写代码的时候,使用@Autowired注解是,发现IDE报的一个警告,如下:  SpringTeamrecommends"Alwaysuseconstructorbaseddependencyinjectioninyourbeans.Alwaysuseassertionsformandatorydependencies".  翻译... 查看详情

java项目源代码里面的get方法为啥总写在set方法前面感觉有点不符合逻辑不是设置之后再获

java项目源代码里面的get方法为什么总写在set方法前面感觉有点不符合逻辑不是设置之后再获取吗,get成员方法和set成员方法分别用于读取和设置私有变量的值一般建议将有特殊限制的成员域的访问控制方式设置为私有模式。这... 查看详情

@autowired&@resource

共同点:@Autowired&@Resource都是完成对象的依赖注入他们都是写在类成员变量上或成员变量的setter方法上不同点:Autowired完整类org.springframework.beans.factory.annotation.Autowired,是Spring定义的注解;Resource完整类名javax.annotation.Resource,... 查看详情

@autowired与@resource的使用方法和差别

一、@Autowired:1、Spring2.5引入了@Autowired凝视,它能够对类成员变量、方法及构造函数进行标注,完毕自己主动装配的工作。 通过@Autowired的使用来消除set。get方法。这个注解就是spring能够自己主动帮你把bean里面引用的对象的s... 查看详情

springboot@autowired注入静态成员变量报空指针异常

Spring@Autowired注入静态变量@Autowired注解和静态方法 查看详情

@autowired注解

@Autowired注解,默认情况下,如果因为找不到合适的bean将会导致autowiring抛出失败异常,可以通过@Autowired(required=false)的方式避免.@Autowired注解可以用于成员变量、set方法、构造器(一个类中只能有一个构造被注释成@Autowired(required=... 查看详情

spring注解配置——@autowired

@Autowired注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过@Autowired的使用来消除set,get方法。在使用@Autowired之前,我们对一个bean配置起属性时,是这样用的<propertyname="属性名"value="属性值... 查看详情

autowired和resource的区别

autowired和resource的区别:1、@Autowired注解由Spring提供,只按照byType注入;@resource注解由J2EE提供,默认按照byName自动注入。2、@Autowired默认按类型进行装配,@Resource默认按照名称进行装配。3、如果同时指定了name和type,则从Spr... 查看详情

spring注入静态成员变量

...注入。1@Component2publicclassLogUtil{34privatestaticPayLogDaologDao;5@Autowired6p 查看详情

spring注解配置——@autowired

...地址。博客地址:http://www.cnblogs.com/caoyc/p/5626365.html @Autowired注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过@Autowired的使用来消除set,get方法。在使用@Autowired之前,我们对一个bean配置... 查看详情

@autowired的用法(代码片段)

@Autowired可以对类的成员变量,方法和构造方法进行自动装配,可以消除set,get方法。原理:在启动SpringIoC时,容器会自动装载一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowired时,会在IoC容器中自动查找需要的b... 查看详情

spring注解@resource和@autowired

@Resource和@Autowired两者都是做bean的注入使用。其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource需要导入。但是Spring支持该注解的注入。共同点两者都可以写在字段和setter方法上。两者如果都写在字段上,就不需要写写... 查看详情

spring注解

...Repository属性:valuebean的ID2.用于注入数据成员变量值注入@Autowired方法和变量上(不需要set方法了)自动按照类型注入多个同类型的bean要注入的变量名称和bean的ID一致@Qualifier 在给类成员注入不能单独使用,给方法参数注入时... 查看详情

自动配置@resource与@autowired(代码片段)

...就不需要setter方法例如:publicclassTestServiceImpl//下面两种@Autowired只要使用一种即可@AutowiredprivateUserDaouserDao;//用于字段上@AutowiredpublicvoidsetUserDao(UserDaouserDao)//用于属性的方法上this.userDao=userDao; 不同点1、@Resource是java的注解,需... 查看详情

autowire注解需要加修饰符吗

Autowired表示一个属性是否需要进行依赖注入,可以使用在属性、普通方法上、构造方法上。注解中的required属性默认是true,如果没有对象可以注入到属性,则会报出异常;@Autowired加在某个属性上,spring会从ioc容器中找到bean对象... 查看详情

springboot自行new出的对象中的成员变量不能使用@autowired注入的解决办法

...类未使用(@Component)即为加入Spring容器中,则其中的被@Autowired的成员变量也不会被注入。不使用@Autowired,而使用一个自定义工具类帮助注入第一步:创建工具类并使用@Component注解注入此处可能报applicationContext为null的错误解决... 查看详情

springioc

...yName、constructor基于注解的自动装配[email protected]通过@Autowired标注成员变量时不要有set方法@Autowired默认是按byType进行匹配的,如果需要按照byName进行需要,需要结合@Qualifier使用:例如@Qualifier("userDao1")[email prote 查看详情

2017.2.6

...初始化,还是在方法里面再new初始化类的成员变量?答:写在类里面,成员变量初始化new就意味着在创建当前对象时候,就一并创立了这个成员变量对象。写在方法里面,是在有需要的时候,调用这个方法时候才初始化这个成员... 查看详情