Spring:IOC之三

通过在扫描组件中配置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可以对业务业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重复性,同时提高了开发的效率

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

上一篇:IOC容器-依赖


下一篇:操作系统-进程的状态与转换