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");。

最新文章

  1. [No000018]都在背单词,为啥学霸那么厉害-如何在一天内记200个单词?
  2. centos6.4下安装php的imagick和imagemagick扩展教程
  3. Android Grapics图像类体系
  4. Markdown使用记录
  5. Linux下select函数的使用
  6. Graph Algorithm
  7. jeecg关闭当前iframe
  8. Ubuntu Server 17.04安装GNOME指令
  9. APP开发外包时常见的错误
  10. 重新设置Eclipse的workspace路径
  11. 使用Selenium IDE和webDriver进行自动化软件测试
  12. Codeforces Round #359 (Div. 2) D - Kay and Snowflake
  13. Oracle 用户,角色,权限等
  14. python中in,not in,比较运算符,格式化输出,编码
  15. centos7.2下nginx安装教程
  16. 华为云Istio服务网格,让应用治理智能化、可视化
  17. Arrow functions and the ‘this’ keyword
  18. 8、java5线程池之动态缓存线程池newCachedThreadPool
  19. codeforces 549F Yura and Developers(分治、启发式合并)
  20. matlab 中try/catch语句

热门文章

  1. 百度小程序-form表单点击提交,input框内容不会清空
  2. navicat12过期问题,Windows平台。
  3. Java Web学习总结(3)Servlet(二)
  4. 谷歌SEO和百度SEO的区别
  5. node连接mysql数据库
  6. 【HDOJ6598】Harmonious Army(最小割)
  7. VMware linux 克隆机的配置
  8. Houdini学习笔记——【一】散落苹果
  9. js中forEach,for in,for of循环的用法
  10. 104、Tensorflow 的变量重用