通过给bean上添加某些注解,可以快速地将bean加入到ioc容器中


常用注解

某个类上,添加以下任何一个注解都行,都能加入到ioc容器的管理中

@Controller 控制器,我们推荐给控制层的组件加这个注解
@Service 业务逻辑,我们推荐给业务逻辑层的组件添加这个注解
@Repository 给数据层(dao层)的组件添加这个注解
@Component 给不属于以上几层的组件添加这个注解

告诉spring自动扫描加了注解的组件,依赖context名称空间

<!-- 开启组件扫描
context:component-scan:自动扫描组件
base-package:指定扫描的基础包。把基础包和它下面的所有子包中所有加了注解的类,自动扫描进ioc容器
-->
<context:component-scan base-package="cn.javaex"></context:component-scan>


扫描的时候可以排除一些不要的组件

<!-- 开启组件扫描
context:component-scan:自动扫描组件
base-package:指定扫描的基础包。把基础包和它下面的所有子包中所有加了注解的类,自动扫描进ioc容器
-->
<context:component-scan base-package="cn.javaex">
<!-- 扫描的时候可以排除一些不要的组件
type="annotation":指定排除规则,按照注解进行排除,标注了指定注解的组件不要
expression:注解的全类名(expression="org.springframework.stereotype.Controller")

type="assignable":指定排除某个具体的类,按照类排除
expression:类的全类名(expression="cn.javaex.controller.StudentController")
-->
<context:exclude-filter type="assignable" expression="cn.javaex.controller.StudentController"/>
</context:component-scan>



测试

/**
* 测试注解类
*/
@Test
public void test04() {
ApplicationContext ioc = new ClassPathXmlApplicationContext("application4.xml");

/*
* 组件id默认是类名首字母小写
* 也可以指定名字,例如:@Service("StudentService")
*/
Object bean1 = ioc.getBean("studentController");
Object bean2 = ioc.getBean("studentController");

System.out.println(bean1==bean2); // true
}


回到顶部