ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring:IOC之三

2022-01-14 20:31:37  阅读:153  来源: 互联网

标签:Company Qualifier Spring 之三 public User IOC class 注入


通过在扫描组件中配置use-default-filters=false可以关闭默认的全类扫描,并进行配置自定义的扫描

<context:include-filter type="annotation" expression="org.springframework.stereotype.Component"/>
<!--关闭默认扫描,只扫描指定路劲下,注解为Component的类-->
<!--
include:包含
exclude:不包含
-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Component"/>
<!--扫描指定路径下,不包含注解为Component的类-->

基于注解方式实现属性注入

  1. @Autowred:根据属性类型就行自动装配注入。
  2. @Qualifier:根据属性名称进行注入。
  3. @Resource:可以根据类型注入,也可以根据名称注入。
//第一步,创建被注入的和注入的类的对象
@Component
public class Company {}
@Component()
public class User {}
//第二步 在Company中注入User对象,在Company中添加User对象作为属性,在属性上使用注解。
@Autowired
private User user;

根据类型注入,可能存在有多个对象的情况而导致报错,所以@Autowired可以和@Qualifier一起用

//User1和User2都实现了UserInterface接口
@Component()
public class User1 implements UserInterface{}
@Component()
public class User2 implements UserInterface{}
//在Company类中注入User时,如不使用@Qualifier则会报错。
//Could not autowire. There is more than one bean of 'UserInterface' type.
//解决方法是正在@Autowired下面加上@Qualifier并指明注入哪一个对象。

完全注解开发

  • 使用一个配置类代替配置文件

  • 在这个类上使用@Configuration注解让spring识别

  • 指定路径:backPackages="com.boerk"

  • 将加载配置文件更改为,加载配置类

    //加载配置文件
    ApplicationContext context =new ClassPathXmlApplicationContext("Bean.xml");
    //加载配置类,参数为配置类的运行时类。
    ApplicationContext  applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
    

AOP面向切面(方面)编程

AOP:Aspect Oriented Programming

利用AOP可以对业务业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重复性,同时提高了开发的效率

即,不通过修改源代码的方式,添加新的功能。

标签:Company,Qualifier,Spring,之三,public,User,IOC,class,注入
来源: https://www.cnblogs.com/Boerk/p/15803439.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有