Spring Boot初学:实体类上用@configuration和@component的影响
实体类用@configuration和@component的影响
初学spring boot 做了一个自定义配置文件,定义实体类,控制层返回实体对象的简单例子,但是遇到了不能把实体对象返回的情况,后面百度,找了好久,终于解决,所以来记录一下。
首先自定义配置文件stu.properties
然后创建对应的实体类StuBean
最后在控制层注入,方法中返回
运行结果
这里非常顺利的显示了,但是重点是当类上用@configuration注解时,会出现什么情况呢?
修改实体类上的注解为@configuration
这次debug一下,看下控制层中的实体对象
可以看到我们明明只定义了4个属性,可是出现好多CGLIB开头的属性,这些是和spring的代理有关(具体的我也不清楚,欢迎小伙伴留言指点哈)
运行访问会发现报错了。。。。。
控制台报这个序列化的错误
解决
看了很多类似博客,都是重新new一个实体对象,重新设值,然后就可以返回成功了,好像是因为Spring容器在管理注入实体类的时候,创建的是代理类,所以debug的时候出现了CGLIB开头的代理属性,然后以json格式返回的时候就报错了,重新new的话,是为了规避这个代理类。
返回成功了
总结
我也刚认真学spring boot没几天,真的很想学好这门框架,希望看到的大佬可以留言分享一下学习方法,还有说错的地方,欢迎指正批评。