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:根据属性类型自动装配,

posted @ 2022-09-19 15:06  _杨先生  阅读(15)  评论(0)    收藏  举报