前面给大家介绍了通过配置文件的方式管理Bean对象,现在给大家介绍一下通过注解的方式管理Bean对象
一:概述
注解:就是通过代码中一些特殊的符号来完成Bean对象的配置
注解写法
@注解名称(属性名称=属性值)
二:开发步骤
第一步:导包
第二步 创建类,在类里面创建方法
//创建该类,等会测试用
public class Bean2 {
public void add() {
System.out.println("bean2.........");
}
}
第三步 创建spring配置文件,在里面写配置
//引入约束,约束有点复杂,放在下一篇详细讲这些约束是怎么找到的。固定Copy就可以。跟前面对比多了一行约束
// http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
<?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">
<!-- 开启注解扫描
(1)到包里面扫描类、方法、属性上面是否有注解
-->
<context:component-scan base-package="xiaozheng.com"></context:component-scan>
</beans>
//核心代码就一行,开启注解扫描。他就会扫描xiaozheng.com包下面类的注解
第四步:在java类中引入注解,并且测试
//声明该类的注解。id=userDao ,通过getBean("userDao")获取
@Service(value="user") // <bean id="user" class=""/>
public class User {
public void add() {
System.out.println("add...........");
}
}
@Test
public void testUser() {
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
User user = (User) context.getBean("user");
System.out.println(user);
user.add();
}
//对注解进一步的说明:
注解有四个:
(1)@Component
(2)@Controller
(3)@Service
(4)@Repository
其实这四个注解的功能是一样的,只不过是为了让你区分是在哪一层的注解。例如@Service,是业务逻辑层的注解。@Component,如果你不确定该注解用在哪一层,就用@Component
注解的属性:在配置Bean的时候介绍了一个Scope单例多例属性,这里也有
@Scope(value="prototype")
@Scope(value="singleton")
三:注入属性【重要】
注入属性第一个注解 @Autowired
注入属性第二个注解 @Resource(name=”“)
测试代码:
//自动去找userDao Bean对象,但是很难看懂,不推荐
@Autowired
private UserDao userDao;
//name指定去找一个叫做userDao的实例化对象,清晰,推荐
@Resource(name="userDao")
private UserDao userDao;
五:总结:在项目开发过程中往往是配置文件和注解混合使用。1,创建对象操作使用配置文件方式实现。2, 注入属性的操作使用注解方式实现
<!-- 开启注解扫描
(1)到包里面扫描类、方法、属性上面是否有注解
-->
<context:component-scan base-package="cn.itcast"></context:component-scan>
<!-- 配置对象 -->
<bean id="bookService" class="cn.itcast.xmlanno.BookService"></bean>
<bean id="bookDao" class="cn.itcast.xmlanno.BookDao"></bean>
<bean id="ordersDao" class="cn.itcast.xmlanno.OrdersDao"></bean>
//得到bookdao和ordersdao对象
@Resource(name="bookDao")
private BookDao bookDao;
@Resource(name="ordersDao")
private OrdersDao ordersDao;
public void add() {
System.out.println("service.........");
bookDao.book();
ordersDao.buy();
}