Spring学习笔记(二)——注解创建对象和注入属性
程序员文章站
2022-03-25 12:13:03
...
一、Bean相关的注解
与SpringBean相关的注解有以下四大类:
-
@Component
:标注一个普通的Spring Bean类 -
@Controller
:标注一个控制器组件类 -
@Service
:标注一个业务逻辑组件类 -
@Repository
:标注一个DAO组件类
如果我们需要定义一个普通的Spring Bean,那么直接使用@Component标注即可。但如果用@Repository、@Service或者@Controller来标注,那么这个Bean类将被作为特殊的JavaEE组件来对待。在Spring的未来版本中,@Controller、@Service和@Repository也许还能携带更多的语义,因此,如果需要在JavaEE应用中使用这些注解时,尽量考虑使用@Controller、@Service和@Repository来代替普通的@Component注解。
二、使用注解来创建对象
1、导入jar包
我们除了在:戳我一下中需要的jar包外,还需要导入:
2、配置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"> <!-- bean definitions here -->
<!-- 开启注解扫描 -->
<!-- 开启注解扫描后,它会到你的包里扫描类,方法,属性上的注解 -->
<context:component-scan base-package="com.jiayifan.ano">
<!-- 这里的如果有多个包,我们可以用"com.jiayifan"来代替以此为开头的所有包 -->
<!-- 只扫描属性上的注解 -->
<!-- <context:annotation-config></context:annotation-config> -->
</beans>
3、写一个类
package com.jiayfian.test;
import com.jiayifan.ano.*;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestAnno {
@Test
public void test1() {
ApplicationContext context =
new ClassPathXmlApplicationContext("bean.xml");
Bean1 b = (Bean1) context.getBean("Bean1");
System.out.println(b);
b.add();
}
}
4、运行结果截图
ApplicationContext context =
new ClassPathXmlApplicationContext("bean.xml");
Bean1 b = (Bean1) context.getBean("Bean1");
System.out.println(b);
b.add();
我们可以感觉到用注解的方法来创建类要比配置文件简单一点。
三、用注解来注入对象属性
(1)创建dao和service对象
(2)在service类里面定义一个dao类型属性
(3)在dao属性上使用@AutoWired
注解自动完成注入(我们也可以通过使用@Resource(name="创建的对象的名称,写在value中的")
完成注入)
service类
package com.jiayifan.ano;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component(value="service")
public class Bean2Service {
//得到Dao对象
//1、先创建一个Dao类型属性
//2、在dao属性上使用注解完成对象注入
@Autowired
private Bean2Dao dao;
//使用注解方法时不需要set方法
public void add() {
System.out.println("Bean2Service");
dao.add();
}
}
dao类
package com.jiayifan.ano;
import org.springframework.stereotype.Component;
@Component(value="dao")
public class Bean2Dao {
public void add() {
System.out.println("Bean2Dao");
}
}
运行代码
ApplicationContext context =
new ClassPathXmlApplicationContext("bean.xml");
Bean2Service b = (Bean2Service) context.getBean("service");
System.out.println(b);
b.add();
结果截图
四、配置文件和注解混合使用
1、创建对象操作使用配置文件实现
2、注入属性的操作使用注解方式实现
发现了一个讲解Spring注解的博文,推荐一下:戳我一下
上一篇: 浏览器的同源策略
下一篇: JavaScript Array 对象