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

开原网站建设大型网站怎么做seo

开原网站建设,大型网站怎么做seo,品牌开发者选择建议,南京建网站公司前言 Lite模式和Full模式是指在软件或系统中的不同配置选项。一般来说#xff0c;Lite模式是指较为简洁、轻量级的配置#xff0c;而Full模式则是指更加完整、功能更丰富的配置。 Lite模式通常会去除一些不常用或占用资源较多的功能#xff0c;以提高系统的运行效率和响应…前言 Lite模式和Full模式是指在软件或系统中的不同配置选项。一般来说Lite模式是指较为简洁、轻量级的配置而Full模式则是指更加完整、功能更丰富的配置。 Lite模式通常会去除一些不常用或占用资源较多的功能以提高系统的运行效率和响应速度。这样可以在资源有限或对系统性能要求较高的情况下使用比如在低配置的计算设备上或移动设备上。 Full模式则包含了系统或软件的所有功能和特性同时可能会占用更多的内存和处理器资源。这样可以满足用户对更多功能和高级选项的需求适合在高配置的计算设备上使用。 选择Lite模式还是Full模式取决于用户的需求和使用场景。如果用户需要更快的响应速度和轻量级的操作体验或者使用的是资源受限的设备那么Lite模式可能更适合。而如果用户需要更多功能和高级选项并且使用的是高配置的设备那么Full模式可能更适合。 需要注意的是Lite模式和Full模式的具体配置内容可能因软件或系统而异用户在选择时应根据具体情况进行判断和比较。 一、开始学习 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/dependencies 3、在 service 包下新建一个 UserService 接口在 impl 包下新建一个 UserServiceImpl 实现类 UserService 接口 public interface UserService {void add();} UserServiceImpl 实现类 Slf4j public class UserServiceImpl implements UserService {Overridepublic void add() {log.info(添加用户);} } 4、在 controller 包下新建一个 USerController 类 RequiredArgsConstructor public class UserController {private final UserService userService;public void addUser() {userService.add();}} 这段代码使用了Lombok库中的RequiredArgsConstructor注解该注解会生成一个带有final修饰的构造方法用于对类中的final属性进行初始化。在这段代码中通过使用RequiredArgsConstructor注解实现了UserController类的构造方法在构造方法中初始化了userService属性避免了手动编写构造方法的繁琐。 需要注意的是使用RequiredArgsConstructor注解时必须保证被注解的属性为非空(final)属性否则在编译时就会出现错误。因此在使用该注解时需要仔细检查每一个被注解的属性是否满足要求。 5、在config 包下新建一个 AppConfig 配置类 Slf4j Configuration public class AppConfig {/*** 装配 Usersevice** return*/Beanpublic UserService userService() {return new UserServiceImpl();}/*** 装配 UserController 并注入 UserService** return*/Beanpublic UserController userController() {// 得到需要注入的 BeanUserService userService userService();log.info(1: userService);UserService userService1 userService();log.info(2: userService1);// 将 bean 通过构造方法注入return new UserController(userService);}}这段代码是一个使用Spring框架的Java配置类其中包含了两个Bean方法用于将UserService和UserController装配到Spring容器中。 在方法userService()中使用Bean注解声明一个UserService的实例并返回该实例。该方法会在Spring容器启动时被调用将UserService加入到Spring容器中。 在方法userController()中同样使用Bean注解声明一个UserController的实例并注入一个UserService的实例。在这个方法内部通过调用userService()方法来获取已经装配到Spring容器中的UserService实例。然后将得到的UserService实例作为参数传递给UserController的构造方法创建并返回UserController的实例。 需要注意的是在这段代码中还使用了Lombok库中的Slf4j注解用于自动生成日志记录器。通过在类上添加该注解可以在Bean方法中使用log记录日志避免手动编写日志记录器带来的繁琐。 Configuration注解是Spring框架中的一个核心注解用于标识一个类为配置类。配置类主要用于定义和组织Bean的创建和装配过程。 具体来说Configuration注解通常与Bean注解一起使用。在一个带有Configuration注解的类中可以使用Bean注解声明方法并将该方法返回的对象注册为一个Bean。Spring容器在启动时会扫描这些类并实例化这些Bean并将其添加到容器中。 6、测试 public class Main {public static void main(String[] args) {ApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);UserController bean context.getBean(UserController.class);bean.addUser();}}运行结果 此时可以看到我们输出的 userservice 和 userservice1 的地址是一样的因为使用了代理模式使用了 Configuration 默认情况下当proxyBeanMethods设置为true时Spring容器会将Bean注解的方法的返回值缓存起来作为单例对象。这样可以确保每次获取该Bean都是同一个实例提高了性能和一致性。 二、禁用代理模式 1、修改 AppConfig 配置类 Slf4j Configuration(proxyBeanMethods false) public class AppConfig {/*** 装配 Usersevice** return*/Beanpublic UserService userService() {return new UserServiceImpl();}/*** 装配 UserController 并注入 UserService** return*/Beanpublic UserController userController() {// 得到需要注入的 BeanUserService userService userService();log.info(1: userService);UserService userService1 userService();log.info(2: userService1);// 将 bean 通过构造方法注入return new UserController(userService);}}Configuration(proxyBeanMethods false) 禁用了代理模式。在这种情况下Spring容器将不会使用CGLIB动态代理来创建userService()和userController()方法返回的Bean实例。 对于userService()方法它没有任何依赖关系每次调用都返回新的UserServiceImpl实例无需代理。 对于userController()方法它依赖于userService()方法返回的Bean实例。由于禁用了代理模式每次调用userService()方法时都会返回一个新的实例并且这个实例会被注入到UserController的构造方法中。 所以在日志输出中看到的userService和userService1的值是不同的它们引用的是不同的UserServiceImpl对象。 通过禁用代理模式您可以确保每个Bean都是原始的实例并且不存在代理对象的干扰。 2、测试 public class Main {public static void main(String[] args) {ApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);UserController bean context.getBean(UserController.class);bean.addUser();}} 运行结果 3、编译异常 这个警告信息的意思是您在一个Configuration配置类中使用了Bean注解的方法并且将proxyBeanMethods设置为false这可能会导致一些问题。 proxyBeanMethods是Configuration注解的一个属性用于指定是否使用代理模式来管理Bean注解的方法中创建的对象默认值为true。当设置为true时Spring容器将使用CGLIB动态代理来管理这些Bean注解的方法和它们依赖的其他Bean。当设置为false时Spring容器将直接调用该方法并返回该方法的返回值作为Bean实例。 如果您将proxyBeanMethods设置为false则表示您不希望使用代理模式来管理Bean但是同时使用Bean注解的方法将直接调用而没有使用Spring容器来管理这些Bean这可能会导致一些问题。例如有些Bean之间可能会产生循环依赖问题导致应用程序无法启动。 为了避免这个问题建议您将proxyBeanMethods设置为true或者尽可能使用依赖注入而不是直接调用Bean注解的方法。 但是呢并不会影响程序的正常运行。 三、使用代理模式和禁用代理模式的区别  代理模式和禁用代理模式的主要区别在于Spring容器处理Bean注解的方法时所采用的方式。 当proxyBeanMethods设置为true时Spring容器会使用CGLIB动态代理来管理Bean注解的方法和它们之间的依赖关系。 当proxyBeanMethods设置为false时Spring容器不使用代理直接调用Bean注解的方法并返回该方法的返回值作为Bean实例。 1、使用代理模式有以下几个优点 循环依赖解决如果存在循环依赖代理模式可以通过提前暴露代理对象来解决循环依赖问题。代理对象可以在被依赖之前就可以被注入从而解决了循环依赖的限制。 单例对象缓存默认情况下当proxyBeanMethods设置为true时Spring容器会将Bean注解的方法的返回值缓存起来作为单例对象。这样可以确保每次获取该Bean都是同一个实例提高了性能和一致性。 2、而禁用代理模式则可能会导致以下问题 循环依赖无法解决如果存在循环依赖则会导致应用程序无法启动。 缺少单例对象缓存由于每次调用Bean注解的方法都会返回一个新的实例因此可能会导致性能问题或意外的行为。 因此通常情况下建议使用代理模式并将proxyBeanMethods设置为true默认就是 true。 四、通过代码了解代理模式 1、在 proxy 包下新建 A、B、BProxy 类 B类 /*** Date 2023-10-08* Author qiu** 目标对象被代理的对象*/ Slf4j public class B {public void say() {log.info(Hello world!);}}BProxy 类 /*** Date 2023-10-08* Author qiu* p* 代理对象*/ Slf4j public class BProxy {/*** 声明一个被代理的对象*/private B b;public BProxy(B b) {this.b b;}public void say() {// 目标方法前before();// 调用目标对象的 say 方法b.say();// 目标方法后after();}/*** 调用目标方法前要执行的逻辑*/private void before() {log.info(调用目标之前执行的业务逻辑.....);}private void after() {log.info(调用目标之后执行的业务逻辑.....);}}2、新建 A 类 测试 public class A {public static void main(String[] args) {// 创建代理对象BProxy bProxy new BProxy(new B());bProxy.say();}} 运行结果 在这个示例中BProxy类是B类的代理类。代理类持有一个被代理对象 b 的引用并且在调用 say() 方法时会在目标方法前后执行额外的逻辑。 BProxy类中的 before() 方法和 after() 方法分别代表了目标方法调用前和调用后需要执行的逻辑。在 say() 方法中首先会执行 before() 方法然后调用被代理对象 b 的 say() 方法最后再执行 after() 方法。 在 A 类的 main 方法中创建了一个 BProxy 对象并调用其 say() 方法。由于 BProxy 是 B 类的代理类因此在调用 say() 方法时额外的逻辑会被执行。 通过静态代理模式我们可以在不修改原始类 B 的情况下对其进行功能扩展或增强。这种方式可以在一些场景下提供更灵活的控制和定制逻辑。 3、分析下图  所谓的代理就是可以理解为是一个中间类中介,当我们需要调用 B 类的方法时我们通过一个代理类来调用 B 类的方法为什么需要代理类呢是因为当我们调用 B 类的方法时需要增加其他的业务逻辑但是又不能对 B 类去修改所以使用代理类在代理类中调用 B 类的方法并且在代理类中调用 say 方法时在之前和之后都做了相应业务逻辑处理。而我们用户调用的还是 say 方法用户不用关心代理类中做了什么事情它只关注它调用的是它想要的方法即可。 代理类就是在调用目标对象的方法时对目标对象的方法进行了增强或者修改。 五、总结 配置类 Lite 模式非代理模式和 Full 模式代理模式  * 当配置类上标注了 configuration 注解时并且 proxyBeanMethods  * 属性设置为 true此时就是 Full 模式Full 模式就是 Spring 会为当前  * 配置类创建一个代理对象从而创建配置类中所有的 Bean 注解的方法  * 这样每当调用配置类只能的 Bean 方法之前会从容器中进行检查 Bean 实例  * 并返回容器中存在的 Bean 对象。  * 反之就是 Lite 模式Lite 模式下配置类并不会被代理。每次调用 Bean  * 方法只是纯粹的调用并不会经过代理。 Lite 模式非代理模式就是Configuration(proxyBeanMethods false) Full 模式代理模式就是Configuration 六、gitee 案例 案例完整地址https://gitee.com/qiu-feng1/spring-framework.git
http://www.sadfv.cn/news/248890/

相关文章:

  • 常州网站建设套餐夸克免费空间
  • ajax网站模板怎样做视频电影网站
  • 专业建设网站建站杭州哪家做外贸网站
  • 个人网站的设计与实现结论什么网站可以制作套餐
  • google帐户登录网站如何做的某些网页打不开是什么原因
  • 河北区做网站公司临沧网站开发
  • 北京云主机网站源码推荐聊城网站建设
  • 深圳网站建站建设公司地址品牌建设途径
  • 做电商网站的步骤企业网站建设浩森宇特
  • 建设一个网站的规划在vs2010里怎么做网站
  • 一个大学网站做的好坏于否的标准做代理记账网站
  • DW自动生成代码做网站网站备案上海
  • 宁波专业定制网站建设网站做标准曲线
  • 深圳响应式网站建设移动互联网营销
  • 企业网站建设用什么营销网站建设的价格
  • 做视频点播网站如何赚钱免费下载app
  • 湖南移动官网网站建设郑州网站加工
  • 西部数码网站助手网页游戏排行榜电脑
  • 龙岩建设局招聘网站wordpress如何撤销301
  • .net网站开发免费教程免费网站收录入口
  • 海珠做网站公司怎样创建网页
  • 永久免费网站建设大概多少钱江门网站推广公司
  • 增加网站和接入备案wordpress系统教程
  • 网站优化 月付费办公室内网怎么搭建局域网
  • 网站开发中常见的注册界面wordpress 制作专题
  • 网站建设j介绍ppt模板教育门户网站系统建设方案
  • 定制网站和模板网站wordpress注册 邮件
  • 建设网站多长时间广告设计这个行业怎么样
  • 建设一个网站步骤做的很好的网站
  • 望都网站建设免费游戏推广