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

的磁力搜索引擎厦门seo网站推广

的磁力搜索引擎,厦门seo网站推广,网站建设公司选择哪家好,如何制作手机app应用软件前言 JSR330是Java社区标准化进程#xff08;Java Community Process#xff0c;简称JCP#xff09;中的一个规范#xff0c;全名为Dependency Injection for Java#xff0c;即Java的依赖注入规范。它定义了一组注解和相关的规范#xff0c;用于实现依赖注…前言 JSR330是Java社区标准化进程Java Community Process简称JCP中的一个规范全名为Dependency Injection for Java即Java的依赖注入规范。它定义了一组注解和相关的规范用于实现依赖注入Dependency Injection简称DI。 依赖注入是一种设计模式旨在解耦应用程序中的不同模块或组件之间的依赖关系。通过依赖注入可以将对象的创建、维护和配置等责任从使用对象的代码中剥离出来并由容器负责提供和注入所需的依赖项。 一、开始学习 本次主学习三个注解RequiredArgsConstructor、Inject、Named。那么它们分别是什么意思有什么用呢 RequiredArgsConstructor、Inject和Named是JSR330规范中的注解用于实现依赖注入。 RequiredArgsConstructor这是一个Lombok注解而不是JSR330规范中的注解。它可以用于生成一个包含所有标记为final或NonNull的字段的构造函数。这样在使用RequiredArgsConstructor注解的类中就无需手动编写构造函数Lombok会自动帮我们生成。这在依赖注入中特别有用可以省去手动编写大量的构造函数代码。 Inject这是JSR330规范中的注解用于标记需要进行依赖注入的构造方法、字段或者方法。通过在目标类中标记Inject依赖注入框架会在需要的时候自动实例化并注入相应的依赖项。 Named也是JSR330规范中的注解用于为依赖项指定名称或者限定符。当一个接口有多个实现类时可以通过Named注解配合不同的名称来区分注入的具体实例。在使用Inject进行注入时可以结合Named注解指定要注入的具体实现。 这些注解都是为了简化依赖注入的使用并保持与JSR330规范的一致性。通过标记相关的注解我们可以更方便地使用依赖注入框架来管理和注入各个组件的依赖关系。 1、新建项目结构如下 2、导入 spring 依赖  !-- spring 的核心依赖 --dependencies!-- https://mvnrepository.com/artifact/org.springframework/spring-context --dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.3.23/version/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.4.5/version/dependency!-- JSR 330 标准注入注解 --dependencygroupIdjavax.inject/groupIdartifactIdjavax.inject/artifactIdversion1/version/dependency/dependencies 注意Inject 不存在 JDK 11 中如果要使用需要额外添加依赖我使用的是 JDK 11,所以需要自己添加依赖使用 Inject 注解。 3、在 service 包下新建一个 UserService 接口在 impl 包下新建一个 UserServiceImpl 实现类 UserService 接口 public interface UserService {void save(); }UserServiceImpl 实现类 Slf4j Service(userService) public class UserServiceImpl implements UserService {Overridepublic void save() {log.info(添加用户.....);} } 4、在 controller 包下新建 UserController 类使用 RequiredArgsConstructor 注解 Controller RequiredArgsConstructor public class UserController {private final UserService userService;public void addUser() {userService.save();}}这是一个示例的Java类使用了Spring框架中的注解来实现依赖注入和控制反转IoC。 在这个示例中UserController是一个控制器类使用了Controller注解来标识它是一个控制器组件。RequiredArgsConstructor注解是Lombok库提供的用来自动生成构造函数并注入依赖。 UserController类有一个私有字段 userService通过final关键字标记并在构造函数中进行初始化。这里使用了构造函数注入即通过构造函数将UserService的实例注入到UserController中实现了依赖注入。 在addUser方法中调用了userService.save()方法。由于userService字段已经通过必要的构造函数注入因此可以直接使用userService对象调用其中的方法。 整体而言这段代码展示了基于Spring框架的控制器类定义和依赖注入的方式。通过使用相应的注解可以方便地管理和注入依赖对象实现松耦合的组件之间的协作。 lombook 迎合了 spring 4.2 的新特性实现了更加简洁的注入方式使用 RequiredArgsConstructor 注解lombook 会自动添加一个带参的构造方法实现构造器的注入注意此时的字段必须是final 修饰 5、在 resources 下新建一个 spring 的 xml 文件 application.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd!-- 启用包扫描 --context:component-scan base-packageedu.nf.ch09//beans 6、测试 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(beans.xml);UserController bean context.getBean(UserController.class);bean.addUser();}}运行结果 二、使用 inject、Named 注解 1、在 service 包下的 impl 包下在新建一个 StuServiceImpl 实现类 Slf4j Service(stuService) public class StuServiceImpl implements UserService {Overridepublic void save() {log.info(添加学生......);} } 2、使用 setter 方法注入 Controller public class UserController {private final UserService userService;/*** 当有多个实现类并且方法参数与 id 不一致时* 可以结合 Named 注解来指定 bean 的 id 又或者* 可以使用 Primary 注解设置注入的优先级** param aa*/InjectNamed(userService)public UserController(UserService aa) {this.userService aa;}public void addUser() {userService.save();}}上述代码是一个使用了Inject和Named注解进行依赖注入的示例涉及到多个实现类时可以使用Named注解来指定要注入的实现类的bean的id。 Inject是Java依赖注入规范中定义的注解用于在运行时自动注入需要的实例。在使用Inject注解时可以结合使用Named注解来指定要注入的实例的bean的id这样Spring框架就可以根据指定的bean id来选择对应的实例进行注入。 在上面的示例中UserController类被标记为Controller组件用于处理HTTP请求。UserService字段被声明为final并在构造函数中通过Inject和Named注解进行注入。使用Named(userService)可以指定要注入的bean为id为userServie的bean。在addUser()方法中直接调用userService.save()方法即可使用该对象提供的服务。 整体来说使用注解进行依赖注入的好处是可以避免手动管理对象依赖关系从而减少与依赖相关的代码量和复杂度并且避免由于错误的依赖关系引起的运行时异常。 3、测试 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(beans.xml);UserController bean context.getBean(UserController.class);bean.addUser();}} 运行结果 那如果要调用 StudentServiceImpl 实现类的方法呢很简单只需要把 Named 的值改为注入的bean为id为stuService的bean  即可。 三、使用 RequiredArgsConstructor、Inject、Named 有什么好处 RequiredArgsConstructor、Inject和Named这些注解在依赖注入中可以提供以下好处 RequiredArgsConstructor注解该注解是Lombok库提供的注解用于自动生成构造函数其中参数为被声明为final或者被标记为NonNull的字段。使用该注解可以简化代码省略手动编写构造函数的过程从而提高开发效率。 Inject注解该注解是Java依赖注入JSR-330规范中定义的注解用于在运行时自动注入所需的实例。使用该注解可以避免手动处理对象的依赖关系框架会自动将所需的实例注入到相应的位置。这样可以减少与依赖相关的代码量和复杂度并且降低耦合度使代码更加可维护和可测试。 Named注解该注解也是Java依赖注入JSR-330规范中定义的注解用于为bean指定唯一的名称或id。当存在多个实现类时可以使用Named注解来标识不同的实现类然后在注入时根据指定的bean名称进行选择注入哪个实例。使用Named注解可以更精确地控制依赖注入的目标对象提高灵活性。 综上所述使用RequiredArgsConstructor可以简化构造函数的编写提高代码效率Inject可以自动注入依赖减少手动管理对象依赖关系的代码量和复杂度Named可以为bean指定唯一的名称或id使得在存在多个实现类时更精确地控制注入目标。这些注解能够有效地提高代码的可读性、可维护性和可测试性同时减少出错的可能性。 四、gitee 案例 案例完整地址https://gitee.com/qiu-feng1/spring-framework.git
http://www.dnsts.com.cn/news/49779.html

相关文章:

  • 婚庆行业网站建设方案1免费咨询肺部医生在线
  • 九江哪里做网站织梦网站去除技术支持
  • 建设展示型网站公司哪家好qq是哪个公司开发的
  • 圣矢网络重庆网站建设优化推广公司广西住房和城乡建设厅网站
  • 河北廊坊做网站做决定的网站
  • 成都网站建设公司是什么意思河北邯郸区号
  • 灵感集网站ppt免费下载的网站
  • 在那做网站惠州企业网站建设选哪家
  • 企业网站建设规划工作表格excel下载
  • 展示型网站解决方案成都易站网站建设
  • 网站一个人可以做吗商城网站开发
  • 有免费建网站用php做的网站必备那些文件
  • 手机销售网站怎么做泰州网站建设公司
  • 手机网站建设注意事项大连网站建设佳熙科技
  • 网页模版之家重庆快速排名优化
  • 网站自己优化网站系统设计方案
  • 纯色直播seo培训价格
  • wordpress注册页面模板怎么修改自己做网站seo优化
  • unity3d可以做网站吗公众号绑定网站
  • 如何建立优秀企业网站宠物网站建设进度表
  • 百度收录网站电话柳城网站设计
  • 攀枝花市建设银行网站汽车网站开发毕业设计论文
  • flash网站特点5566网址大全设首页
  • 二手房地产中介网站建设标题制作网站
  • 百度给做的网站如何登陆网站后台家具网站建设目的及功能定位
  • 做网站一般需要哪些文件夹网站展示重点
  • 泉州找工作网站凡客资源
  • php网站开发工作描述网站套站什么意思
  • 信息手机网站模板下载软件谷歌浏览器中文手机版
  • 百度怎样建立一个网站dedecms建网站