当前位置: 首页 > news >正文

做网站要多少钱友情链接的定义

做网站要多少钱,友情链接的定义,平台型网站建设公司,用html做班级网站java springboot 项目, 通过接口修改Person类 name值, 在别的类中,注入Person类 Resource Person person, 为什么拿不到 接口修改的 name的值,是Person类 不同的对象造成的 吗 参数对象和注入对象区别 Person类&…

java springboot 项目, 通过接口修改Person类 name值, 在别的类中,注入Person类 @Resource Person person, 为什么拿不到 接口修改的 name的值,是Person类 不同的对象造成的 吗

参数对象和注入对象区别

Person类,一个是作为control参数@RequestBody 一个是@Resource 注入

在Spring MVC应用中,当你遇到一个`Person`类既作为控制器(Controller)方法的`@RequestBody`参数接收请求体中的数据,又在另一个服务类中通过`@Resource`或`@Autowired`注解注入时,这两者实际上是不同的实例,分别服务于不同的目的和生命周期管理。

### `@RequestBody`的用途

- 当你在控制器方法中使用`@RequestBody`注解时,Spring MVC会将HTTP请求的主体(body)内容自动绑定到方法的参数上。这里的`Person`对象是根据请求中发送的JSON或XML等数据动态创建的,仅存在于该请求的上下文中,用于处理该次请求的数据。

### `@Resource`或`@Autowired`的用途

- 当你在一个服务类中使用`@Resource`或`@Autowired`注解来注入`Person`类的实例时,Spring IoC容器会负责提供这个Bean的实例。默认情况下,这样的Bean通常是单例(Singleton)的,意味着在整个应用运行期间,每次注入该类型的Bean时,都将获得容器中同一个共享的实例。这个实例通常由Spring容器初始化时创建,并根据需要管理其生命周期。

### 为何两者不共享状态

由于通过`@RequestBody`解析的`Person`对象是针对每个HTTP请求新创建的,而通过`@Resource`注入的`Person`实例是由Spring容器管理的,可能是单例的,两者存在于不同的作用域中,因此它们不共享状态。即使你修改了通过`@RequestBody`接收到的`Person`对象的属性,这不会影响到通过依赖注入获取到的`Person`实例。

解决状态同步问题

如果需要在服务层响应`@RequestBody`接收到的数据变更,并且确保其他地方注入的`Person`实例能够感知到这些变更,你需要设计一个机制来同步这些状态变化。这通常涉及数据库操作、使用消息队列或更新缓存等,而不是直接修改注入的Bean实例。例如,你可以将接收到的数据保存到数据库,然后在需要的地方重新加载最新的数据。

在Spring Boot应用程序中,如果您在Controller中使用@RequestBody将JSON数据映射到Person对象,并在其他Service或Component中使用@Resource注入同一个Person对象,那么这两个操作通常涉及不同的实例。

这是因为@RequestBody通常用于接收前端发送的请求体中的数据,并自动将JSON格式的数据映射到Java对象。这个对象是Spring根据请求内容创建的新实例,而不是Spring容器管理的Bean。

另一方面,@Resource@Autowired用于注入由Spring容器管理的Bean。如果Person类被标记为@Component@Service,那么Spring会创建一个Person类的实例,并将其注册到容器中,以便在其他地方注入。

因此,如果您在Controller中通过@RequestBody接收了一个Person对象并修改了它的name属性,这个修改不会影响到通过@Resource注入的Person实例,因为它们是两个不同的对象。

如果您想要在Service或Component中使用通过Controller更新的Person对象,您需要将这个对象传递过去,而不是注入一个全新的实例。例如:

@Controller
public class PersonController {@Autowiredprivate PersonService personService;@PostMapping("/updatePerson")public ResponseEntity<?> updatePerson(@RequestBody Person person) {// 这里person是通过@RequestBody接收的新实例personService.updatePerson(person);return ResponseEntity.ok().build();}
}@Service
public class PersonService {// 这里注入的是Spring容器管理的Person实例@Resourceprivate Person person;public void updatePerson(Person updatedPerson) {// 将通过Controller更新的person对象的属性复制到注入的person对象person.setName(updatedPerson.getName());// ... 其他属性的复制}
}

在这个例子中,PersonServiceupdatePerson方法接收了一个通过Controller更新的Person对象,并将它的属性复制到通过@Resource注入的Person对象中。这样,您就可以在Service中使用更新后的数据了。

http://www.laogonggong.com/news/462.html

相关文章:

  • 查询建设银行卡卡号网站seo优化是什么职业
  • 大型建设网站推广软文范例100字
  • 网站后台管理系统模块百度网盘破解版
  • wordpress修改了访问地址济南优化网页
  • 如何做律所网站东莞seo网站排名优化
  • 做网站服务费税率软文有哪些
  • 网站模板建设二级目录sem竞价代运营
  • 有没有电脑做兼职的网站网站优化哪个公司好
  • 国外画册设计欣赏网站互联网营销方法有哪些
  • 怎么推广我的网站百度站长平台电脑版
  • 网站建设seo合同书免费com域名注册永久
  • 桂林市网站建设公司怎么建立网站卖东西
  • 中国河北网站百度app官方下载安装到手机
  • 做盗版视频网站吗百度官方网站网址是多少
  • 企业网址格式seo搜索引擎实训心得体会
  • 营销型企业网站建设体会巨量引擎
  • 乐清网站网站建设开网店3个月来亏了10万
  • 国家企业信用公示系统官网(全国)搜索引擎优化时营销关键词
  • 以下哪些网站是b2c网站王通seo
  • 网站设计免费字体app用户量排名
  • 网站建设与维护服务器合肥关键词快速排名
  • 奇点网站建设html制作网站
  • 如何选择一个好的优质网站建设公司管理人员课程培训
  • 做网站的版权问题怎样做引流推广
  • 做网站是通过怎么挣钱最新nba排名
  • 做网站建设的怎么寻找客户百度云搜索
  • 特色美食网站建设百度一下你就知道原版
  • 福州网站建设精英新手如何自己做网站
  • 一条龙网站建设哪家好东莞网站建设方案外包
  • 代搭建网站成都多享网站建设公司