Spring 讲解(四)

Spring 中使用注解注入

注解:就是一个类,使用 @ 注解名称。

实际开发中:使用注解取代 xml 配置文件。

1、常用注解释义

@component

取代 <bean class="">

@Component(“id”)

取代 <bean id="" class="">

web开发,提供3个 @Component 注解衍生注解取代

@Repository(“名称”):dao层

@Service(“名称”):service层

@Controller(“名称”):web层

web 开发中其他常用注解

@Autowired:自动根据类型注入

@Qualifier(“名称”):指定自动注入的id名称

@Resource(“名称”)

@ PostConstruct 自定义初始化

@ PreDestroy 自定义销毁

2、案例代码演示

接口和实现类

public interface UserService {
    void add(User user);
}

=========================================================================================
@Component
public class UserServiceImpl implements UserService {
    @Override
    public void add(User user) {
        System.out.println("添加用户信息..."+user);
    }
}

配置 bean.xml 文件

<?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.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 开启注解-->
    <context:annotation-config/>
    <!-- 注解的位置-->
    <context:component-scan base-package="com.example.demo"/>
</beans>

测试函数

public class ServiceTest {
    public static void main(String[] args) {
        
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        UserService userService = context.getBean(UserServiceImpl.class);
        
        User user = new User();
        user.setUsername("元始天尊");
        user.setAge(999);
        user.setPassword("555");
        
        userService.add(user);
    }
}

控制台日志信息如下:

添加用户信息…User{username=‘元始天尊’, password=‘555’, age=999}

3、重点:注解是如何取代 xml 中 bean 的配置

a、在类中声明@Component 相当于配置了 :

<bean class="com.example.demo.service.impl.UserServiceImpl"></bean>

b、Spring默认情况下注解不生效,需要开启注解功能 :

<!-- 开启注解-->
<context:annotation-config/>

<!-- 注解的位置-->
<context:component-scan base-package="com.example.demo"/>

c、使用注解时 需注意 bean.xml 配置了以下约束,否则不会生效:
约束文件

4、还可以使用以下配置

@Component("userService")
public class UserServiceImpl implements UserService {

    private String name;

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void add() {
        System.out.println("创建用户...." + name);
    }

    @Override
    public void add(User user) {
        System.out.println("添加用户信息..."+user);
    }
}
public class ServiceTest {

    public static void main(String[] args) {

        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        UserService userService = (UserService)context.getBean("userService");

        User user = new User();
        user.setUsername("元始天尊");
        user.setAge(999);
        user.setPassword("555");

        userService.add(user);

    }
}

2 种运行的结果都是一样的。

@Component(“userService”) 就是加上了 id ,就相当于在 Spring 容器中注入的时候有了唯一的 id 号码,所以在获取的时候可以通过 id 获取,即UserService userService = (UserService)context.getBean("userService");。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值