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

中山网站只设计wordpress自建表格

中山网站只设计,wordpress自建表格,长春品牌网站建设公司,网站配置服务Wordpress1.IOC控制反转 1.1介绍控制反转: Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。 对象的创建权由程序员主动创建转移到容器(由容器创建、管理对象)。这个容器称为…

在这里插入图片描述

1.IOC控制反转

1.1介绍

  • 控制反转: Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。
    • 对象的创建权由程序员主动创建转移到容器(由容器创建、管理对象)。这个容器称为:IOC容器或Spring容器。

意义:
降低组件间的耦合度(松耦合)。
便于测试(可轻松替换依赖为模拟对象)。
集中管理对象生命周期,提高代码复用性。

1.2 使用

1.2.1 Bean的声明

  • bean对象:IOC容器中创建、管理的对象,称之为:bean对象。
注解说明位置
@Component声明bean的基础注解不属于以下三类时,用此注解
@Controller@Component的衍生注解标注在控制层类上
@Service@Component的衍生注解标注在业务层类上
@Repository@Component的衍生注解标注在数据访问层类上(由于与mybatis整合,用的少)

注意1:声明bean的时候,可以通过注解的value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
注意2:使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。

1.2.2 组件扫描

在这里插入图片描述

  • 前面声明bean的四大注解,要想生效,还需要被组件扫描注解 @ComponentScan 扫描。
  • 该注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解 @SpringBootApplication 中,默认扫描的范围是启动类所在包及其子包。

所以,我们在项目开发中,只需要按照如上项目结构,将项目中的所有的业务类,都放在启动类所在包的子包中,就无需考虑组件扫描问题。

2.DI依赖注入

2.1介绍

  • 依赖注入: Dependency Injection,简称DI。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
    • 程序运行时需要某个资源,此时容器就为其提供这个资源。
    • 例:EmpController程序运行时需要EmpService对象,Spring容器就为其提供并注入EmpService对象。

2.2使用

2.2.1 @Autowired用法

@Autowired 进行依赖注入,常见的方式,有如下三种:
1). 属性注入

@RestController
public class UserController {//方式一: 属性注入@Autowiredprivate UserService userService;}
  • 优点:代码简洁、方便快速开发。
  • 缺点:隐藏了类之间的依赖关系、可能会破坏类的封装性。

2). 构造函数注入

@RestController
public class UserController {//方式二: 构造器注入private final UserService userService;@Autowired //如果当前类中只存在一个构造函数, @Autowired可以省略public UserController(UserService userService) {this.userService = userService;}}   
  • 优点:能清晰地看到类的依赖关系、提高了代码的安全性。
  • 缺点:代码繁琐、如果构造参数过多,可能会导致构造函数臃肿。
  • 注意:如果只有一个构造函数,@Autowired注解可以省略。(通常来说,也只有一个构造函数

3). setter注入

/*** 用户信息Controller*/
@RestController
public class UserController {//方式三: setter注入private UserService userService;@Autowiredpublic void setUserService(UserService userService) {this.userService = userService;}}  
  • 优点:保持了类的封装性,依赖关系更清晰。
  • 缺点:需要额外编写setter方法,增加了代码量。

在项目开发中,基于@Autowired进行依赖注入时,基本都是第一种和第二种方式。(官方推荐第二种方式,因为会更加规范)但是在企业项目开发中,很多的项目中,也会选择第一种方式因为更加简洁、高效(在规范性方面进行了妥协)。

2.2.2 注意事项

那如果在IOC容器中,存在多个相同类型的bean对象,会出现什么情况呢?
在下面的例子中,我们准备了两个UserService的实现类,并且都交给了IOC容器管理。 代码如下:
[图片]

此时,我们启动项目会发现,控制台报错了:
[图片]

出现错误的原因呢,是因为在Spring的容器中,UserService这个类型的bean存在两个,框架不知道具体要注入哪个bean使用,所以就报错了。

如何解决上述问题呢?Spring提供了以下几种解决方案:

  • @Primary
  • @Qualifier
  • @Resource

方案一:使用@Primary注解
当存在多个相同类型的Bean注入时,加上@Primary注解,来确定默认的实现。

@Primary
@Service
public class UserServiceImpl implements UserService {
}

方案二:使用@Qualifier注解
指定当前要注入的bean对象。 在@Qualifier的value属性中,指定注入的bean的名称。 @Qualifier注解不能单独使用,必须配合@Autowired使用。

@RestController
public class UserController {@Qualifier("userServiceImpl")@Autowiredprivate UserService userService;

方案三:使用@Resource注解
是按照bean的名称进行注入。通过name属性指定要注入的bean的名称。

@RestController
public class UserController {@Resource(name = "userServiceImpl")private UserService userService;

面试题:@Autowird 与 @Resource的区别

  • @Autowired 是spring框架提供的注解,而@Resource是JDK提供的注解
  • @Autowired 默认是按照类型注入,而@Resource是按照名称注入
http://www.dtcms.com/a/584925.html

相关文章:

  • 怎么降低网站的跳出率郑州汉狮哪家做网站好
  • 北京高端it网站建设许昌市做网站公司
  • 国家建设部官方网站赵宏彦网站续费如何做分录
  • 西安市专业网站建设企业信息管理系统软件
  • zzcms网站开发wordpress 特色 外链
  • 深圳做二类学分的网站活动营销的方式有哪些
  • 非盈利网站建设问题成都宅天下装饰公司口碑
  • 公司让做网站违法苏州知名高端网站建设企业
  • 做视频特效的网站有哪些数字营销是什么专业
  • thinkphp做双语网站公司如何办网站
  • 南头做网站公司广州番禺职业技术学院招生网
  • 自助建站空间怎么用制作网页常见的布局方法有
  • js特效网站手表购买网站
  • 房子信息查询网站入口重庆小程序制作
  • 如何把网站上线网络营销推广是做什么的
  • 电影网站开发PPT模板网站设计 推广
  • 被关闭的设计网站如何创立自己的网址
  • wordpress写网站教程vps建wordpress
  • 如何自己建一个微网站免费咨询劳动律师
  • 怎么做网站卖保险北京住房和城乡建设局门户网站
  • 大连三合一网站制作wordpress 微商城
  • 制作微信网页的网站高端网站制作模板
  • 全屏背景网站做外贸生意用哪个网站
  • 手机网站建设优化软件网站常用文件夹
  • 北京自助建站软件做企业网站首页尺寸
  • 无锡建设网站制作wordpress无插件
  • 网站推广销售腾讯会员被告怎么办网站开发 前端如何学习
  • 织梦做的网站图片路径在哪里好大夫在线免费咨询
  • 80s无水印视频素材网站下载wordpress模板位置
  • 电商电商网站建设专业的个人网站建设哪家便宜