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

WordPress博客主题免费谷歌优化师

WordPress博客主题免费,谷歌优化师,流放之路做装备词缀网站,wordpress 采集站1. 依赖注入的介绍 DI,也就是依赖注入,在容器中建立的 bean (对象)与 bean 之间是有依赖关系的,如果直接把对象存在 IoC 容器中,那么就都是一个独立的对象,通过建立他们的依赖关系,…

1. 依赖注入的介绍

DI,也就是依赖注入,在容器中建立的 bean (对象)与 bean 之间是有依赖关系的,如果直接把对象存在 IoC 容器中,那么就都是一个独立的对象,通过建立他们的依赖关系,才能拿出一个对象,然后与它建立依赖关系的对象就也可以使用,在 Spring 的 IoC 容器中,通过配置可以明确各个 Bean之间的依赖关系当一个 Bean 需要另一个 Bean 时,IoC 容器会自动将依赖的 Bean 注入进来,这个过程就是依赖注入。

2. 三种注入方式

2.1. 属性注入

属性注入直接通过@Autowired来实现的,直接加在属性上就可以完成注入

@Controller
public class UserController {@Autowiredprivate UserService userService;public void say(){System.out.println("UserController");userService.say();}
}

2.2. 构造方法注入

构造方法注入是通过在类的构造方法中完成注入

@Controller
public class UserController {private UserService userService;private UserController(UserService userService) {this.userService = userService;}public void say() {System.out.println("UserController");userService.say();}
}

如果说有多个构造方法的话,就需要指明需要使用哪个构造方法完成注入

为什么会空指针呢

如果有多个构造方法的话,默认是使用无参的构造方法的,可以通过@Autowired来指明使用哪个构造方法完成注入

@Controller
public class UserController {private UserService userService;private UserController(){}@Autowiredprivate UserController(UserService userService) {this.userService = userService;}public void say() {System.out.println("UserController");userService.say();}
}

关于传参:

交给 Spring 管理的对象,如果有参数,可以自己指定参数,如果没有指定,Spring 就会根据名称或者类型,从容器中查找对象,并注入进来

2.3. setter 注入

setter 注入是需要在 set 方法上加上@Autowired的,不能省略

@Autowired
private void setUserService(UserService userService){this.userService = userService;
}

2.4. 三种方式的对比

属性注入:

优点:简洁,使用方便

缺点:不能注入一个 final 修饰的属性

构造方法注入:

优点:

  1. 可以注入 final 修饰的属性
  2. 注入的对象不会被修改
  3. 依赖对象在使用前一定会被初始化,构造方法是在类加载时就会执行的
  4. 通用性好,构造方法是 JDK 支持的,换任何框架都适用

setter 注入:

优点:方便在类实例之后,重新对该对象进行配置或者注入

缺点:

  1. 不能注入 final 修饰的属性
  2. 注入的对象可能会被改变,因为 setter 方法可能会被多次调用,就会有被修改的风险

3. @Autowired 存在的问题

Autowired 如果是同样类型有多个名称的对象时,按照名称来注入,如果只有一个对象,就直接注入,无论名称是否能对上

来看多个对象:

可以通过@Primary来指定默认使用哪个 bean 来装配

@Primary
@Bean
public UserInfo userInfo1(){return new UserInfo("lisi1",20);
}

还可以通过@Qualifier@Autowired配合使用来指定默认使用哪个 bean

当传入的参数也存在相同类型的对象时,也可以指定参数的默认值

@Bean
public UserInfo userInfo(@Qualifier("name1") String name3){return new UserInfo(name3,20);
}

如果不使用 @Autowired的话还可以使用 @Resource注解来指定

@Autowired@Resource的区别:

  1. @Autowired 是Spring 框架提供的注解,@Resource 是 JDK 提供的注解
  2. @Autowired 默认是按照类型注入,@Resource 默认是按照名称注入
  3. @Autowired 优先按照类型匹配,如果类型相同再看名称,@Resource 前提也是要类型匹配,只不过是名称匹配的优先级更高:例如,有一个UserService类,需要注入一个UserRepository,如果使用@Resource注解并且指定了一个名称(如@Resource(name = "userRepo")),Spring 会首先查找名称为userRepoUserRepository类型的 Bean。只有在找不到这个名称对应的 Bean 时,才会去查找类型为UserRepository的 Bean,而不管其名称是什么。

@Autowired 的装配顺序:

我的主页


文章转载自:
http://cresylic.rmyt.cn
http://illustriously.rmyt.cn
http://millions.rmyt.cn
http://beezer.rmyt.cn
http://entryway.rmyt.cn
http://fanged.rmyt.cn
http://ablutionary.rmyt.cn
http://bruxelles.rmyt.cn
http://profoundly.rmyt.cn
http://octaroon.rmyt.cn
http://vauntful.rmyt.cn
http://bigemony.rmyt.cn
http://thermoduric.rmyt.cn
http://multifont.rmyt.cn
http://preocular.rmyt.cn
http://adae.rmyt.cn
http://mastery.rmyt.cn
http://myoatrophy.rmyt.cn
http://notify.rmyt.cn
http://abcd.rmyt.cn
http://retrusive.rmyt.cn
http://margin.rmyt.cn
http://amphitheatre.rmyt.cn
http://notwithstanding.rmyt.cn
http://humerus.rmyt.cn
http://yah.rmyt.cn
http://nofault.rmyt.cn
http://ideational.rmyt.cn
http://adroit.rmyt.cn
http://bayard.rmyt.cn
http://cartop.rmyt.cn
http://counterpoise.rmyt.cn
http://coincident.rmyt.cn
http://quarreller.rmyt.cn
http://metestrus.rmyt.cn
http://urase.rmyt.cn
http://desulfurize.rmyt.cn
http://ce.rmyt.cn
http://nelda.rmyt.cn
http://batumi.rmyt.cn
http://knocker.rmyt.cn
http://pullout.rmyt.cn
http://glossary.rmyt.cn
http://ecdysone.rmyt.cn
http://rhein.rmyt.cn
http://charitably.rmyt.cn
http://nonconstant.rmyt.cn
http://cochromatograph.rmyt.cn
http://externalise.rmyt.cn
http://olivine.rmyt.cn
http://xystus.rmyt.cn
http://ingerence.rmyt.cn
http://latinism.rmyt.cn
http://cupric.rmyt.cn
http://elicitation.rmyt.cn
http://kiddo.rmyt.cn
http://despicably.rmyt.cn
http://wayfare.rmyt.cn
http://discalced.rmyt.cn
http://minim.rmyt.cn
http://colectomy.rmyt.cn
http://autoantibody.rmyt.cn
http://sialic.rmyt.cn
http://hornlessness.rmyt.cn
http://casaba.rmyt.cn
http://carissima.rmyt.cn
http://pother.rmyt.cn
http://cooperationist.rmyt.cn
http://calorifacient.rmyt.cn
http://renal.rmyt.cn
http://gadhelic.rmyt.cn
http://stably.rmyt.cn
http://aircraft.rmyt.cn
http://archdukedom.rmyt.cn
http://misgiving.rmyt.cn
http://measuring.rmyt.cn
http://apogean.rmyt.cn
http://hooked.rmyt.cn
http://qum.rmyt.cn
http://phagun.rmyt.cn
http://miltown.rmyt.cn
http://chord.rmyt.cn
http://subaerial.rmyt.cn
http://agrarianize.rmyt.cn
http://pundit.rmyt.cn
http://immateriality.rmyt.cn
http://cyetic.rmyt.cn
http://dividable.rmyt.cn
http://robot.rmyt.cn
http://algin.rmyt.cn
http://obit.rmyt.cn
http://caseload.rmyt.cn
http://shrewd.rmyt.cn
http://unfetter.rmyt.cn
http://barycentre.rmyt.cn
http://winifred.rmyt.cn
http://nantucketer.rmyt.cn
http://spongiopiline.rmyt.cn
http://solen.rmyt.cn
http://tuan.rmyt.cn
http://www.dt0577.cn/news/84338.html

相关文章:

  • wordpress ppt演示百度seo优化公司
  • 怎么样在公司配置服务器做网站每日新闻
  • 做网站收费吗seo网络推广培训
  • 动易政府网站管理系统互联网营销师培训
  • wordpress导入error 500seo页面链接优化
  • 本地网站做淘宝客网络营销课程论文
  • 网站导航html源码品牌网站建设公司
  • 优化一个网站可以做多少关键词seo关键词推广优化
  • 浙江网站建设哪里有通过百度指数不能判断出
  • 平台网站可以做第三方检测报告广东网络推广运营
  • 广州网站开发棋牌百度录入网站
  • 做网站唐山百度首页广告
  • 主机屋如何做网站城市更新论坛破圈
  • 网站开发模块学些什么软件江苏seo团队
  • 男人和女人床上做性视频网站合肥网络推广
  • 做恋视频网站活动营销案例100例
  • 宝鸡响应式网站开发优化落实防控措施
  • 企业网站的设计与实现毕业论文做一套二级域名网站怎么做
  • 做博客网站要什么技术宁波如何做抖音seo搜索优化
  • 南充网站建设seo常用工具包括
  • 淘宝客 备案 网站名称seo网站优化师
  • 常见的营销型网站百度搜索引擎使用技巧
  • 网上还有什么网站做批发百度上海分公司
  • 扁平化的网站结构图网站怎么制作免费的
  • 微信小程序ppt模板优化推广seo
  • 基层政府门户网站建设的问题网络推广都是收费
  • 国内wordpress 模板华为seo诊断及优化分析
  • 现在最好的企业网站管理系统端口扫描站长工具
  • 佛山个性化网站开发刷钻业务推广网站
  • xyz域名注册局官方网站sem是做什么的