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

263网站建设品质好是什么意思

263网站建设,品质好是什么意思,电话网络营销是什么,聊城网站那家做的好前言 Spring注解结合XML配置是指在Spring应用中#xff0c;使用注解和XML配置的方式来进行Bean的定义、依赖注入和其他配置。这种方式可以充分利用Spring框架的注解和XML配置两种不同的配置方式的特点。 在Spring框架中#xff0c;我们可以使用注解来定义Bean#xff0c;如…前言 Spring注解结合XML配置是指在Spring应用中使用注解和XML配置的方式来进行Bean的定义、依赖注入和其他配置。这种方式可以充分利用Spring框架的注解和XML配置两种不同的配置方式的特点。 在Spring框架中我们可以使用注解来定义Bean如Component、Service、Repository等注解也可以使用XML配置文件来定义Bean例如bean标签。通常情况下我们可以使用其中一种方式来定义Bean但在某些复杂的场景下我们需要同时使用这两种方式来定义Bean。具体来说 使用注解来定义Bean这样可以减少XML配置文件中的内容使代码更加简洁易于阅读和维护。例如 Component(userService) public class UserServiceImpl implements UserService {// ... } 使用XML配置来定义Bean这样可以提供更多的灵活性使得对Bean的配置更加详细和准确。例如 bean iduserService classcom.example.UserServiceImpl!-- 注入依赖 --property nameuserDao refuserDao/ /bean 使用注解和XML配置结合的方式来定义Bean可以根据具体要求灵活地选择采用XML配置或注解来定义Bean。例如 context:component-scan base-packagecom.example/bean iduserDao classcom.example.UserDaoImpl/bean iduserService classcom.example.UserServiceImpl!-- 注入依赖在XML配置中引用注解定义的Bean --property nameuserDao refuserDao/ /bean 在这种方式下我们可以使用注解来扫描指定包下的所有组件使用XML配置来定义和配置Bean实现依赖注入、AOP等功能。 综上所述Spring注解结合XML配置是指通过同时使用注解和XML配置的方式以适应不同的需求和场景提供更加灵活和精细的配置。 一、开始学习注解 1、本次我们要学习的有四个注解 Component Repository Service Controller那么他们分别是什么意思呢 在Spring框架中Component、Repository、Service和Controller是用于标记类的注解用于定义Bean的角色和作用。 Component它是一个通用的注解用于表示一个普通的组件类可用于任意层次。当我们使用Component将一个类标记为组件时Spring容器会自动扫描并创建这个类的实例作为Bean。Repository它用于标记数据访问层DAO的组件类。主要用于对数据库的操作包括数据的增删改查等。通过Repository注解Spring会将这个类识别为持久化层的Bean常与Autowired配合使用进行依赖注入。Service它用于标记服务层Service的组件类。主要负责业务逻辑的处理比如事务管理、数据校验、调用DAO层等。通过Service注解Spring会将这个类识别为服务层的Bean常与Autowired配合使用进行依赖注入。Controller它用于标记控制器层Controller的组件类。主要用于接收用户请求处理请求参数调用Service层处理业务逻辑并返回相应的视图或数据。通过Controller注解Spring会将这个类识别为控制器层的Bean常与RequestMapping等注解一起使用。 以上四个注解都是用于标记组件类并将其注册为Spring容器中的Bean。它们的作用是告诉Spring容器哪些类需要被实例化为Bean并提供相应的功能如依赖注入、AOP切面等。 使用这些注解可以使代码更加清晰和模块化也有利于后续的扩展和维护。同时结合不同的注解我们可以将一个大型应用程序分成不同层次的组件使开发更加高效和可管理。 了解完这四个注解后我们就来完成一个案例通过案例去更直观的了解它们吧。 2、新建项目结果如下 3、导入 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/dependencies 4、在 dao 包下新建一个 UserDao 接口在 impl 包下新建 UserDaoImpl 实现类 userDao 接口 public interface UserDao {void save();} UserDaoImpl 实现类 Component(userDao) Slf4j public class UserDaoImpl implements UserDao {Overridepublic void save() {log.info(insert into user_info...... );} } Component:用于标识当前类为一个 Bena 这样就会被 spring 容器扫描到,可以通过 value 来指定 Bean 的 id如果不指定 value默认的 id 就是当前类名并将首字母改为小写例如userDaoImpl 5、在 service 包下新建一个 UserService 接口在 impl 包下新建一个 UserServiceImpl 实现类 UserService 接口 public interface UserService {void add();}UserServiceImpl 实现类 Component(userService) public class UserServiceImpl implements UserService {private UserDao userDao;/*** 通过构造方法注入 dao** param userDao** Autowired注解进行注入*/Autowiredpublic UserServiceImpl(UserDao userDao) {this.userDao userDao;}Overridepublic void add() {userDao.save();} }6、在 controller 包下新建 UserController 类 Component(userController) public class UserController {private UserService userService;/*** 通过构造方法注入** param userService*/Autowiredpublic UserController(UserService userService) {this.userService userService;}public void add() {userService.add();}} 7、 在 resources 下新建一个 spring 的 xml 文件 application.xml在配置文件中完成 Bean 的装配 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd bean iduserDao classedu.nf.ch07.dao.impl.UserDaoImpl/bean iduserService classedu.nf.ch07.service.impl.UserServiceImplconstructor-arg nameuserDao refuserDao//beanbean iduserController classedu.nf.ch07.controller.UserControllerconstructor-arg nameuserService refuserService//bean /beans 这个案例是通过使用 Component 注解去装配一个 bean。 8、测试 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(application.xml);UserController bean context.getBean(UserController.class);bean.add();}}测试结果 9、分析 在实现类和 UserControlelr 类都是用了 Component 注解去装配一个 bean 而且还是带参数的那么这个参数有什么用呢看下图 使用Spring框架进行依赖注入的配置文件它采用了XML格式来描述组件及其之间的依赖关系。 在这个配置文件中定义了三个Bean userDao它的类为edu.nf.ch07.dao.impl.UserDaoImpl。这个Bean用于访问数据库并提供了数据访问操作。 userService它的类为edu.nf.ch07.service.impl.UserServiceImpl。这个Bean用于封装一些具体的业务逻辑操作并调用userDao进行数据访问。 userController它的类为edu.nf.ch07.controller.UserController。这个Bean用于接收用户请求通过调用userService处理业务逻辑最终返回相应的视图或数据。 在XML配置文件中name用于指定要注入的属性或构造函数参数的名称。它通常和value、ref等属性一起使用在显式配置Bean时指定相应的属性或构造函数参数。name属性的取值为一个字符串表示目标属性或构造函数参数的名称。 在XML配置文件中ref用于指定依赖注入的目标Bean。它的取值为一个Bean的ID。在给某个属性或构造函数参数注入值时通过ref指定目标Bean的IDSpring容器会自动解析这个依赖关系并将相应的Bean实例注入到目标位置。 在这些Bean之间存在一定的依赖关系。userDao被userService依赖因此在userService的构造函数中使用constructor-arg标签注入userDao。同样userService被userController依赖因此在userController的构造函数中使用constructor-arg标签注入userService。 这种基于XML的配置方式被称为“显式配置”它会告诉Spring容器哪些Bean需要被实例化并建立它们之间的依赖关系。通过使用这种方式我们可以将组件之间的关系直观地描述出来同时可以灵活地进行配置和修改。 二、使用特定注解定义各个类 1、 Dao 层 Repository Repository(userDao) public class UserDaoImpl implements UserDao {Overridepublic void save() {log.info(insert into user_info...... );} }2、service 层 Service Service(userService) public class UserServiceImpl implements UserService {private UserDao userDao;/*** 通过构造方法注入 dao** param userDao** Autowired注解进行注入*/public UserServiceImpl(UserDao userDao) {this.userDao userDao;}Overridepublic void add() {userDao.save();} }3、controller 层 Controller Controller(userController) public class UserController {private UserService userService;/*** 通过构造方法注入** param userService*/public UserController(UserService userService) {this.userService userService;}public void add() {userService.add();}}4、改配置文件 ?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.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.2.xsd !-- 启用注解扫描 , 指定扫描的包 --context:component-scan base-packageedu.nf.ch07//beans 在Spring配置文件中context:component-scan用于启用注解扫描并指定要扫描的包路径。通过这个配置Spring容器会自动扫描指定包及其子包下的类并将它们注册为Bean。上述示例中使用context:component-scan配置启用了注解扫描功能并通过base-package属性指定了要扫描的包路径为edu.nf.ch07。这意味着Spring容器将会扫描该包及其子包下的类查找带有特定注解如Component、Service、Repository等的类并将其注册为Bean。 5、测试 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(application.xml);UserController bean context.getBean(UserController.class);bean.add();}}测试结果 6、使用Component 和使用 Controller Repository Service 的区别 Component、Controller、Repository、Service都是Spring中的注解它们都是Component注解的扩展。使用它们可以标记一个类作为组件并将其注册到Spring容器中。它们之间的区别如下 Component通用注解可用于任何类。Controller用于标记控制器层的组件常用于SpringMVC应用程序。Repository用于标记数据访问层的组件表示该组件负责数据访问常用于与数据库交互的场景。Service用于标记业务逻辑层的组件表示该组件负责业务处理常用于编写业务逻辑。 使用context:component-scan配置时它会扫描指定包及其子包下的标记了Component、Controller、Repository、Service注解的类并将其注册为Bean。因此在使用context:component-scan时使用哪种注解来标记类并没有影响。 但是建议在不同层次的组件上使用相应的注解以便更好地组织代码并使代码更易于理解和维护。这也是所谓的“约定优于配置”原则的一种体现即通过预定义的注解来简化配置提高代码清晰度和可读性。 三、使用注解结合 xml 开发有什么好处 注解和XML配置结合的方式可以提供更灵活和可扩展的依赖注入配置方案。下面是使用注解和XML配置结合的几个好处 增加可读性和易维护性通过使用注解可以将依赖注入相关的配置信息直接写在类的代码中使得代码更加直观和可读。同时将一些通用的配置信息比如数据库连接等放在XML配置文件中可以提高配置信息的可维护性和重用性。 灵活性和扩展性注解可以灵活地应用于各种情况例如使用 Autowired 注解进行自动注入、使用 Qualifier 注解指定具体的Bean、使用 Primary 注解指定默认的Bean等。这些注解可以与XML配置文件结合使用提供更细粒度的依赖注入控制和配置灵活性。 降低耦合性通过使用注解和XML配置结合的方式可以将实现类与接口之间解耦。使用 Qualifier 注解可以根据需要选择具体的实现类在不改变代码的情况下更换依赖的实现类。同时Primary 注解可以指定默认的实现类减少了代码中对具体实现类的直接引用进一步降低了耦合性。 总的来说注解和XML配置结合的方式可以提供更灵活、可读性更好、可维护性更高、扩展性更强、耦合性更低的依赖注入配置方案。通过合理选择和使用注解和XML配置可以更好地管理和控制对象之间的依赖关系。   四、gitee 案例 案例完整地址https://gitee.com/qiu-feng1/spring-framework.git
http://www.pierceye.com/news/182671/

相关文章:

  • 可以更改上传到网站的文件内容吗信用 网站 建设方案
  • 获奖设计网站公司制作网站价格表
  • 做单页免费模板网站我是做推广的怎么找客户
  • 企业网站建设的缺点网络营销最基本的应用方式是什么
  • 做cpa推广用哪种网站好上海h5网站开发
  • 怎样做免费网站推广怎么申请二级域名
  • 站长之家源码之家虚拟空间官网
  • 网站建设推荐书籍装修公司装修房子
  • 上海专业微信网站开发公司怎么做seo
  • 上海市质量工程建设管理协会网站网站后台源码
  • 淄博机关建设网站免费发布企业信息平台
  • 怎么注册网站免费的怎么给网站备案
  • 新公司 做网站 流程西安房价
  • 展厅设计软件珠海百度快速优化
  • 网站 关键词 地区seo对网络推广的作用是什么?
  • 网站建设 知乎wordpress woocommerce主题
  • 申请建设工作网站的函如何做网站词库
  • 化工集团网站建设 中企动力网站建设用的服务器
  • wow做宏的网站重庆网址大全
  • 网站建设试题 jsp炎陵做网站
  • 购物网站前台功能模块怀孕单子图片在线制作
  • 做百度推广和企业网站那个有效果吗互动的网站
  • 织梦网站后台怎么登陆磁力兔子搜索引擎
  • wordpress建站必须选择主题磁力引擎
  • 主流网站 技术做爰的网站
  • 网站开发免责合同东莞营销型网站建设公司
  • 网站建设维护培训班网站排名系统
  • 深圳语种网站建设石家庄企业网站建设
  • 长春企业公司网站建设湖北省住房和城乡建设厅门户网站
  • 网站主机名是什么在小说网站做责编