spring的控制器Action中定义成员变量持久类bean或者po,为什么用了@Autowired注解还用加上对应的getter和setter方法才能注入呢?

Java我人生 2015-02-07 01:18:34
spring集成hibernate或者mybatisORM框架的时候,为什么MVC中控制器Action中定义成员变量持久类bean或者po,往往为什么用了@Autowired注解不顶用还要加上对应的getter和setter方法才能注入呢?@Autowired对这样的javabean成员变量是不是摆设?而在控制器中定义的成员变量service层的,加上@Autowired注解不需要getter和setter就能注入,为什么?是不是service层的类都加了@service注解才能作为一个bean,才有用@A utowired注解自动装配,而对应的持久类javabean没有加过相关注解,所以spring就只能用setter和getter注入?大牛们快来,帮帮解答一下这个疑惑吧
...全文
1256 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
炀大人 2016-06-17
  • 打赏
  • 举报
回复
bean的定义要懂,一是实现序列号接口,二是写出无参构造器,三是有get/set方法,四是重写equals/hashcode方法; 我们公司的bean中,hibernate注解是写在属性上或get方法上的
qq_16454723 2016-01-23
  • 打赏
  • 举报
回复
您好,我有和你一样的疑惑,你找到答案了吗,在bean中一定要有set/get方法吗
Java我人生 2015-05-25
  • 打赏
  • 举报
回复
一句话,如题在Structs2中是没问题可以的!但是在springMVC里是不可以的,应该放在对应方法里作为同名参数就可以了! 如果还有疑惑,建议大家看看 我的博文:SpringMVC与Struts2区别与比较总结http://blog.csdn.net/chenleixing/article/details/44570681
Java我人生 2015-05-25
  • 打赏
  • 举报
回复
我的贴子贴出时没人回答,2个月后,怎么这么多人回答
xinxinn0 2015-05-25
  • 打赏
  • 举报
回复
目测是注解没扫描
邹邹wl 2015-05-25
  • 打赏
  • 举报
回复
你想Action层前后台交互的那些 用注解? 这个要实现估计要改框架源码吧。 想service层等都是单例的,你那个交互数据能用单例吗,好好想想。
Java我人生 2015-05-25
  • 打赏
  • 举报
回复
不行,这是springMVC,和struts2不一样,应该在对应的方法参数里写入这个实体参数就可以了,spirngMVC一个方法对应一个上下文和struts2是一个Action
scmod 2015-05-24
  • 打赏
  • 举报
回复
ss的话不是struts2对这些实体类进行操作的额.... springmvc的话是直接参数绑定也没定义什么getset啊..
skyshowshow 2015-05-23
  • 打赏
  • 举报
回复
用@controller注解
Java我人生 2015-02-08
  • 打赏
  • 举报
回复
引用
#5
@wbshuaiq 是的,实体类加@Autowired,不会报错的,hibernate和mybatis的实体类都可以,在struts2或springMVC中,Action中加上这些实体类作为成员变量,视图可以直接把表单的各个变量“映射”到这个变量的各个属性里边,不过对象名字得相同。问题是Action里这些实体类对象必须有对应的getter和setter方法,否则前台的变量匹配不进去,用@Autowired不起作用。
痘痘飞 2015-02-08
  • 打赏
  • 举报
回复
引用 4 楼 chenleixing 的回复:
@wbshuaiq 我理解你的说的意思,service层是这样,加上@service等注解是不用写getter和setter方法了。 但我的疑惑是“为什么MVC中控制器Action中定义成员变量持久类bean或者po,往往为什么用了@Autowired注解不顶用还要加上对应的getter和setter方法才能注入呢?@Autowired对这样的javabean成员变量是不是摆设?”,应该不是你说的注解没扫到配置文件的问题,因为spring和hibernate或mybatis的集成项目都用过,而且在不同的公司,都是这样情况,不应该是配置方面出的问题。
你意思是实体类加注解? 好像要报错的。。
Java我人生 2015-02-07
  • 打赏
  • 举报
回复
@wbshuaiq 我理解你的说的意思,service层是这样,加上@service等注解是不用写getter和setter方法了。 但我的疑惑是“为什么MVC中控制器Action中定义成员变量持久类bean或者po,往往为什么用了@Autowired注解不顶用还要加上对应的getter和setter方法才能注入呢?@Autowired对这样的javabean成员变量是不是摆设?”,应该不是你说的注解没扫到配置文件的问题,因为spring和hibernate或mybatis的集成项目都用过,而且在不同的公司,都是这样情况,不应该是配置方面出的问题。
痘痘飞 2015-02-07
  • 打赏
  • 举报
回复
@Resource private UserService userService; 这样上面的userService 就不用加get set
痘痘飞 2015-02-07
  • 打赏
  • 举报
回复
如果在action中用service层 加@resource
痘痘飞 2015-02-07
  • 打赏
  • 举报
回复
估计是注解没扫描到 <context:annotation-config /> <context:component-scan base-package="com" />

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧