Spring_IOC操作bean(基于注解)
Spring_IOC操作bean管理(基于注解)
-
格式:@注解名称(属性名=属性值,属性名=属性值,……)
-
注解可以作用在类,属性,方法。
-
使用注解的目的:简化xml配置
1、基于注解创建对象:
spring提供了四种创建对象的注解:
- @Component 全局都可以使用
- @Service:一般用于Service层
- @Controller:一般用于web层
- @ Repository:一般用于Dao层
这四个注解作用一样,只能注解在类上面,都可以创建对象,但分类后可读性更强。
第一步:引入依赖包:
使用注解方式,有用到AOP编程,所以需要导入AOP依赖包

第二步:引入约束文件,并开启组件扫描:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!--component-scan是组件扫描属性,base-package指定扫描那个包,被扫描的包下所有使用注解的类及属性都归Spring管理-->
<context:component-scan base-package="com.dyh.demo.pojo"/>
</beans>
第三步:在com.dyh.demo.pojo包下创建类并加上注解
/**
* 这里通过@Component注解来创建对象,括号中value的值等同于之前xml创建对象使用的id,为了后面使用时通过id来获取对象
* 括号中的内容也可以省略,默认是类名并且首字母小写
* 可以用其他三个注解
*/
@Component
public class student {
private String name;
private int age;
第四步:getBean()获取对象:
public class Test {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("Beans.xml");
// 注意:Bean的id名默认会首字母小写,所以在这里getBean的时候注意id名首字母小写
student student = ac.getBean("student",student.class);
System.out.println(student);
}
}
组件扫描的细节配置:
① use-default-fileters属性设置为false表示不使用默认过滤器,通过子标签include-filter来设置只扫描com.oymn包下的所有@Controller修饰的类 。
注意use-default-filters 属性的默认值为 true,使用默认的 Filter 进行包扫描,默认的 Filter 对标有 @Component,@Service,@Controller和@Repository 的注解的类进行扫描 。
<context:component-scan base-package="com.oymn" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
②子标签exclude-filter设置哪些注解不被扫描,例子中为@Controller修饰的类不被扫描。
<context:component-scan base-package="com.oymn">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
在使用 use-default-filters 属性时要分清楚需要扫描哪些包,是不是需要使用默认的 Filter 进行扫描。即 use-default-filters="false" 需要和 context:include-filter 一起使用,不能和 context:exclude-filter 属性一起使用。
2、基于注解进行属性注入:
@Autowired:根据属性类型自动装配,

浙公网安备 33010602011771号