@Controller:用于创建Controller层bean实例
@Service:用于创建Service层bean实例
@Repository:用于创建Dao层bean实例
@Component:用于创建其他bean实例
上述四个注解功能一致,底层都是@Component,都是用于创建bean的实例,只是习惯上用于区分不同层次架构
-
导入
spring-aop-x.x.x.RELEASE.jar
-
开启组件扫描
<!--如果所有扫描的包都在一个上级包下,可以直接引入这个上级包,Spring会扫描当前包及其子包下的所有文件--> <context:component-scan base-package="com.carl"/>
<!--如果需要扫描多个包,包与包之间用逗号隔开--> <context:component-scan base-backage="com.carl.controller,com.carl.service"/>
<!--组件扫描控制--> <!--扫描com.carl包下除了添加@Controller注解以外的所有文件--> <context:component-scan base-backage="com.carl"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"" </context:component-scan> <!--关闭Spring自带过滤器,只扫描com.carl包下添加@Controller注解的文件--> <context:component-scan base-backage="com.carl" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"" </context:component-scan>
-
创建类,在类上添加创建对象的注解
在创建对象的注解中的value属性对应bean标签中的id属性
如果value属性不写,value值默认为当前类的类名首字母小写,例如:UserService=>userService
@Controller(value = "userController1") //该注解等价于<bean id="userController1" class="com.carl.controller.UserController"/> public class UserController { public boolean addUser(){ System.out.println("添加用户成功!"); return true; } }