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

什么是注解?

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

Spring 针对Bean管理中创建对象提供注解

	(1)@Compenent
	(2)@Controller
	(3)@Service
	  (4)   @Repository
 	四个注解功能上是一样的,都可以用来创建bean实例

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

1、第一步,引入spring-aop的依赖

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>

2、开启组件扫描(Spring才能找到注解)

    <!--
        开启注解扫描
        1.如果扫描多个包,多个包使用逗号隔开
        2.扫描上层目录
    -->
    <context:component-scan base-package="IOC容器.Bean管理操作.注解方式"></context:component-scan>

注解的扫描组件 中 我们可以不使用它自带的过滤器,自定义扫描注解的范围

    <!--
        可以自定义扫描那些注解
        use-default-filters="false" 表示不使用它默认的扫描过滤器
        
    -->
    
    <context:component-scan base-package="IOC容器.Bean管理操作.注解方式" use-default-filters="false">
        <!--只扫描包中带有Controller注解的类-->
        <context:include-filter type="annotation"
                                expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <context:component-scan base-package="IOC容器.Bean管理操作.注解方式" use-default-filters="false">
        <!--扫描包包中 除了带有Controller注解的 所有类-->
        <context:exclude-filter type="annotation"
                                expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

3、第三步创建类

/**
 * 不加value 默认是类名 首字母小写
 * <bean id="userService" class="IOC容器.Bean管理操作.注解方式.service.UserService"/>
 */
@Component(value = "userService")

public class UserService {
}

属性注入

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

/**
     * 注解方式注入属性 不需要添加set方法 
     */
    @Autowired
    private UserDao userDao;

2、@Qualifier:根据属性名称进行注入 (必须和@Autowird搭配使用)

    @Autowired
    @Qualifier(value = "userDao")
    private UserDao userDao;

3、@Resource:可以根据属性类型,也可以根据名称进行注入

    /**
     * @Resource 可以根据属性名称注入,也可以通过属性类型注入
     */
    @Resource
    private UserDao userDao;

4、@Value: 注入普通类型属性

    /**
     * @Value 
     * 为普通属性注入值
     */
    @Value("abc")
    private String name;
    @Value("1")
    private int number;

完全注解开发

1、创建配置类,替代xml 配置文件

/**
 * 配置类
 * @Configuration 声明当前类为配置类,替代xml
 * @ComponentScan 开启组件扫描
 */
@Configuration
@ComponentScan(basePackages = {"IOC容器.Bean管理操作.注解方式"})
public class SpringConfig {
}

2.加载配置类 使用的是AnnotationConfigApplicationContext

//第一步、加载 配置类
        ApplicationContext context=
                new AnnotationConfigApplicationContext(SpringConfig.class);

        //第二步、获取配置创建的对象
        UserService userService = context.getBean("userService", UserService.class);

        System.out.println(userService);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值