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

Spring 讲解(四)的更多相关文章

  1. Spring第四天,BeanPostProcessor源码分析,彻底搞懂IOC注入及注解优先级问题!

  2. Spring系列(四) 面向切面的Spring

    除了IOC外, AOP是Spring的另一个核心. Spring利用AOP解决应用横切关注点(cross-cutting concern)与业务逻辑的分离, 目的是解耦合. 横切关注点是指散布于代码多 ...

  3. Spring Boot(四) Mybatis-MySql

    Spring Boot(四) Mybatis-MySql 0.准备数据库表 -- ---------------------------- -- Table structure for person ...

  4. 阶段3 2.Spring_01.Spring框架简介_01.spring课程四天安排

    spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的A ...

  5. spring security四种实现方式

    spring security四种实现方式 spring(20) > 目录(?)[+] 最简单配置spring-securityxml实现1 实现UserDetailsService 实现动态过 ...

  6. 学习spring第四天

    Spring第四天讲义 今日内容 Spring的事务管理 Spring和MyBatis框架的集成 1. Spring的事务管理 1.1. 事务是什么? 在操作数据库时(增删改),如果同时操作多次数据, ...

  7. Spring AOP四种实现方式Demo详解与相关知识探究

    一.前言 在网络上看到一篇博客Spring实现AOP的4种方式,博主写的很通俗易懂,但排版实在抓狂,对于我这么一个对排版.代码格式有强迫症的人来说,实在是不能忍受~~~~(>_<)~~~~ ...

  8. spring学习(四) ———— 整合web项目(SSH)

    清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到. --WH 一.web项目中如何使用spring? 当tomcat启动时,就应该加载spring的配置 ...

  9. 【Spring】12、Spring Security 四种使用方式

    spring security使用分类: 如何使用spring security,相信百度过的都知道,总共有四种用法,从简到深为:1.不用数据库,全部数据写在配置文件,这个也是官方文档里面的demo: ...

随机推荐

  1. yml文件 参数中的逗号 ','

    今天在学习springcloud的geteway的时候,使用yml配置route spring: profiles: betweenroute cloud: gateway: routes: - id ...

  2. controllerweb.xml

    <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...

  3. web前端到底怎么学?

    互联网+的火爆,让互联网行业快速的扩张.越来越多的人想通过学习的途径进入这个行业,java开发.WEB前端开发.UI设计等专业受到大众追捧.小编这次主要介绍一下WEB前端开发,为想要学习web前端开发 ...

  4. CF 936C Lock Puzzle——构造

    题目:http://codeforces.com/contest/936/problem/C 玩了一个小时,只能想出 5*n 的方法. 经过一番观察?考虑这样构造:已经使得 A 串的一个后缀 = B ...

  5. CodeForces - 1051D (线性DP)

    题目:https://codeforces.com/problemset/problem/1051/D 题意:一个2行n列的矩形,上面有黑白块,然后问你怎么布置才能有k个连通块,问有多少种方案数 思路 ...

  6. 攻防世界 | CAT

    来自攻防世界官方WP | darkless师傅版本 题目描述 抓住那只猫 思路 打开页面,有个输入框输入域名,输入baidu.com进行测试 发现无任何回显,输入127.0.0.1进行测试. 发现已经 ...

  7. NOIP 历年试题大致考点总结

    总的来说,水平还不够-- 要努力了! NOIP2012 D1T1 模拟, 字符串 D1T2 贪心, 数学 (推导贪心策略), 高精度 D1T3 unsolved 开车旅行 倍增 D2T1 解线性模方程 ...

  8. 认识setFactory

    平常设置或者获取一个View时,用的较多的是setContentView或LayoutInflater#inflate,setContentView内部也是通过调用LayoutInflater#inf ...

  9. fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程

    系统之家 发布时间:18-05-3117:56 很多Win7用户在复制较大的文件时,系统会弹出窗口提示“对于目标文件系统,文件XXX过大”,出现这种情况的原因是FAT32的文件系统不支持复制大于4g的 ...

  10. springboot 尚桂谷学习总结01

    ------springboot 技术入门------ 1.springboot 简介: 优点: 简化spring 应用开发的一个框架 整个spring技术栈的一个大整合 ------微服务----- ...