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