Spring:IOC之三(Spring: IOC III)

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

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的类-->

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

  • @Autowred:根据属性类型就行自动装配注入。
  • @Qualifier:根据属性名称进行注入。
  • @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可以对业务业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重复性,同时提高了开发的效率

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

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

————————

By configuring in the scanning component, you can turn off the default full class scanning and configure custom scanning

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的类-->

Attribute injection based on annotation

  • @Autowred: automatically assemble and inject according to the attribute type.
  • @Qualifier: inject according to the attribute name.
  • @Resource: can be injected according to type or name.
//第一步,创建被注入的和注入的类的对象
@Component
public class Company {}
@Component()
public class User {}
//第二步 在Company中注入User对象,在Company中添加User对象作为属性,在属性上使用注解。
@Autowired
private User user;

< strong > according to the type injection, there may be multiple objects, resulting in an error, so @ Autowired can be used with @ qualifier < / strong >

//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并指明注入哪一个对象。

Fully annotated development

  • Use a configuration class instead of a configuration file
  • 在这个类上使用@Configuration注解让spring识别
  • 指定路径:backPackages=”com.boerk”
  • 将加载配置文件更改为,加载配置类
    //加载配置文件
    ApplicationContext context =new ClassPathXmlApplicationContext(“Bean.xml”);
    //加载配置类,参数为配置类的运行时类。
    ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);

AOP aspect oriented programming

AOP:Aspect Oriented Programming

AOP can isolate each part of business logic, reduce the coupling between each part of business logic, improve the repeatability of program, and improve the efficiency of development

AOP can isolate each part of business logic, reduce the coupling between each part of business logic, improve the repeatability of program, and improve the efficiency of development

That is, new functions are added without modifying the source code.