Spring5框架2020最新版教程(十一)IOC操作Bean管理(基于注解方式)

IOC操作Bean管理(基于注解方式)

一、什么是注解

1、注解就是代码特殊标记,格式@:注解名称(属性名称=属性值,属性名称=属性值)
2、使用注解,注解作用在类上面,方法上面,属性上面
3、使用注解的目的:简化xml配置

二、spring针对bean管理中创建对象提供注解

1、@Component
2、@Service
3、@Controller
4、@Repository

  • 上面四个注解功能是一样的,都可以用来创建Bean实例

三、基于注解方式实现对象的创建

1、第一步引入依赖
2、开启组件扫面
如果扫面多个包,可以用逗号隔开,或是扫描包的上层目录

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:content="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

<content:component-scan base-package="com.lds.springdemo.ldstest">   
</content:component-scan>

</beans>

3、创建类,在类上面添加创建对象注解

/**
* @Component(value = "ldsService") value 值可以不写,不写就是会
* 默认为类名称首字母小写:ldsService
*/
@Component(value = "ldsService")
public class LdsService {

    public void add() {
        System.out.println("LdsService add...");
    }
}

四、开启组件扫面细节配置

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:content="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

    <!--示例一:use-default-filters表示现在不使用默认filter,自己配置filter
                include-filter 设置扫面那些内容-->
    <content:component-scan base-package="com.lds.springdemo.ldstest" use-default-filters="false">
        <content:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </content:component-scan>
    <!--示例二:下面配置扫面包所有内容
                content:exclude-filter 设置哪些内容不进行扫描
                -->
    <content:component-scan base-package="com.lds.springdemo.ldstest" use-default-filters="false">
        <content:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </content:component-scan>


</beans>

五、基于注解方式实现属性注入

1、@Autowired:根据属性类型进行自动装配

第一步:把service和dao对象创建,在service和dao类添加对象注解
在service注入dao对象,在service类添加dao类型属性,在属性上面使用注解

service层

@Service
public class LdsService {

    /**
     * 定义dao类型属性
     * 不需要添加set方法
     * 添加注入属性注解
     */
    @Autowired
    private LdsDao ldsDao;

    public void add() {
        System.out.println("LdsService add...");
    }
}

Dao接口

public interface LdsDao {
    void add();
}

Dao接口实现类1

@Repository("ldsDaoImpl01 ")
public class LdsDaoImpl01 implements LdsDao {
    public void add() {
        System.out.println("LdsDaoImpl01 add...");
    }
}

2、@Qualifier:根据属性名称进行注入
这个@Qualifier注解的使用,和@Autowired一起使用
一个接口可有多个实现类

  • Dao接口实现类2
@Repository("ldsDaoImpl02 ")
public class LdsDaoImpl02 implements LdsDao {
    public void add() {
        System.out.println("LdsDaoImpl02 add...");
    }
}

@Qualifier注解使用演示

@Service
public class LdsService {

    /**
     * 定义dao类型属性
     * 不需要添加set方法
     * 添加注入属性注解
     */
    @Autowired
    @Qualifier(value = "ldsDaoImpl01")
    private LdsDao ldsDao;

    public void add() {
        System.out.println("LdsService add...");
        ldsDao.add();
    }
}

3、@Resource:可以根据类型注入,可以根据名称注入

@Service
public class LdsService {

    /**
     * 定义dao类型属性
     * 不需要添加set方法
     * 添加注入属性注解
     */
    //@Resource 这么写就是根据类型进行注入
    @Resource(name = "ldsDaoImpl01")//这么写就是根据名称进行注入
    private LdsDao ldsDao;

    public void add() {
        System.out.println("LdsService add...");
        ldsDao.add();
    }
}

4、@Value:普通类型注入

 @Value(value="abc")
    private String name;

六、完全注解方式开发
无需配置文件
1、创建配置类,替代xml文件

/**
* @Description:  Spring配置类
* @Author: lds
* @Date: 2020/12/14
*/
@Configuration //作为配置类,替代xml配置文件
@ComponentScan(basePackages = "com.lds.springdemo")
public class SpringConfigDemo {
}

2、编写测试类

/**
 * @author LDS
 * 测试类
 */
public class DemoConfigTest {
    @Test
    public void test() {
        //1、加载配置类
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfigDemo.class);
        //2、获取配置创建的对象
        LdsService ldsService = context.getBean("ldsService", LdsService.class);
        ldsService.add();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的名字是雪冬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值