初识 Spring(05)---(Annotation注解)
Annotation 注解
注入注解:@Autowired 注入
1.加在set方法上, 默认按类型by type,如果在 spring 容器中能够找到多个相同的类型,就从这多个类型找查找有没有一个key的值跟我们的 set 方法的参数名相同,如果有,就注入;没有的话,就无法判断要注入哪一个,导致报错
如果想用byName,使用@Qulifie 需要写在参数上
文件目录
代码:配置文件:beans.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-4.0.xsd"> <context:component-scan base-package="com.neudeu.service,com.neuedu.dao"></context:component-scan> </beans>
base-package="com.neudeu.service,com.neuedu.dao 扫描这两个包
Test.java
package com.neuedu.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); } }
UserDao.java
package com.neuedu.dao; import org.springframework.stereotype.Component; @Component //注解方式 //Spring 自动地给这个类创建对象并将这个类放到 String 容器中去 public class UserDao { public UserDao() { System.out.println("UserDao..."); } public void save(){ System.out.println("保存用户信息..."); } }
@Component //注解方式
UserService.java
package com.neudeu.service; import org.springframework.stereotype.Component; import com.neuedu.dao.UserDao; @Component public class UserService { public UserService() { System.out.println("UserService..."); } private UserDao userDao; public void save(){ userDao.save(); } }
输出:
修改代码:
UserService.java
package com.neudeu.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.neuedu.dao.UserDao; @Component public class UserService { public UserService() { System.out.println("UserService..."); } private UserDao userDao; public void save(){ userDao.save(); } @Autowired //自动的将 userDao的属性注入进来 //修改代码 public void setUserDao(UserDao userDao) { //修改代码 System.out.println("setUserDao..."); //修改代码 this.userDao = userDao; //修改代码 } }
输出: @Autowired //自动的将 userDao的属性注入进来
修改代码:
Test.java
package com.neuedu.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.neudeu.service.UserService; public class Test { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); UserService userService = ac.getBean(UserService.class); userService.save(); } }
输出:
set 注入 byName,按名称注入
修改代码:配置文件:beans.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-4.0.xsd"> <context:component-scan base-package="com.neudeu.service,com.neuedu.dao"></context:component-scan> <bean id="ud" class="com.neuedu.dao.UserDao"></bean> </beans>
输出:byName,按名称注入
修改代码:beans.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-4.0.xsd"> <context:component-scan base-package="com.neudeu.service,com.neuedu.dao"></context:component-scan> <bean id="ud" class="com.neuedu.dao.UserDao"></bean> <bean id="ud1" class="com.neuedu.dao.UserDao"></bean> //修改代码 </beans>
UserService.java
package com.neudeu.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.neuedu.dao.UserDao; @Component public class UserService { public UserService() { System.out.println("UserService..."); } private UserDao userDao; public void save(){ userDao.save(); } @Autowired //自动的将 userDao的属性注入进来 public void setUserDao(@Qualifier("ud1") UserDao userDao) { //修改代码 System.out.println("setUserDao..."); this.userDao = userDao; } }
输出:
2.加在属性上,默认按类型bytype; 如果想用byName,使用@Qulifie
修改代码:beans.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-4.0.xsd"> <context:component-scan base-package="com.neudeu.service,com.neuedu.dao"></context:component-scan> <bean id="ud" class="com.neuedu.dao.UserDao"></bean> <bean id="userDao" class="com.neuedu.dao.UserDao"></bean> //修改代码 </beans>
UserService.java
package com.neudeu.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.neuedu.dao.UserDao; @Component public class UserService { @Autowired //自动的将 userDao的属性注入进来 @Qualifier("ud") private UserDao userDao; public UserService() { System.out.println("UserService..."); } public void save(){ userDao.save(); } }
输出:
@Resource 注入
默认按名称,名称找不到,按类型;可以指定特定名称
修改代码:
UserService.java
package com.neudeu.service; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.neuedu.dao.UserDao; @Component public class UserService { @Resource //修改代码 @Qualifier("ud") private UserDao userDao; public UserService() { System.out.println("UserService..."); } public void save(){ userDao.save(); } }
输出:@Resource 作用和 Autowired 一样,不过注入方式不同,前者默认按名称byName,后者默认按类型bytype
强制按名称,找不到则报错
UserService.java
package com.neudeu.service; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.neuedu.dao.UserDao; @Component public class UserService { //@Autowired //自动的将 userDao的属性注入进来 @Resource(name="ud1") //修改代码 //@Qualifier("ud") private UserDao userDao; public UserService() { System.out.println("UserService..."); } public void save(){ userDao.save(); } }
输出:
组件注解
@Component,@Controller,@Service,@Repository
初始化的名字默认为类名首字母小写,可以指定初始化bean的名字;
实质没有任何区别,功能都一样,在哪个层都可以随意调用,但推荐尽量遵从规范。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
用xpath、bs4、re爬取B站python数据
import requests,re from lxml import etree from bs4 import BeautifulSoup def get_page(page): try: #这里要加上cookie headers = { 'Cookie': 'LIVE_BUVID=AUTO5015218915110407; sid=4oag5i0u; fts=1521891539; pgv_pvi=3655305216; UM_distinctid=16257cdfffd2e4-032750a28294b2-3b60450b-100200-16257cdfffe2a0; buvid3=7B94813D-1039-4A88-A1EE-9AEFDF54BE05140244infoc; rpdid=kxsliqpkisdosikxllmww; CURRENT_QUALITY=80; finger=edc6ecda', 'Host': 'search.bilibili.com', 'Referer': 'https://www.bilibili.com/', 'Upgrade-Insec...
- 下一篇
PHP学习8——图像处理
主要内容: 加载GD库 创建图像 绘制点,线,矩形,多边形,椭圆,弧线 绘制文字 通过GD库生成验证码 其实吧,学习图像方法的最大作用,好像就是为了制作验证码。 所以此专题,不如叫做制作验证码。 1、加载GD库 PHP5不仅可以处理文本数据,还可以处理多种格式的图像,安装了GD库,需要通过php.ini来加载GD库。 可以通过phpinfo()方法来确认,如果有gd栏目就说明GD库加载成功了。 phpinfo.php <?php phpinfo(); ?> 2、创建图像 GD库处理图像的操作都是先在内存处理,操作完成后再以数据流的方式输出到浏览器,有4个步骤: 创建画布 绘制图像 输出图像 释放资源 创建画布 创建画布就是在内存区中开辟一块存储区 imagecreate.php <?php //创建普通画布 $img1=imagecreate(100,100) or die("创建普通画布失败<br/>"); echo "创建普通画布成功<br/>"; //创建真彩画布 $img2=imagecreatetruecolor(200,300) o...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16