说明
如图,项目目录:
注解的方式:
1.目标:省略掉在xml中配置bean!
2.方式:
- 先在主配置文件,告知要开启注解模式:<context:annotation-config/>
- 在相关的类的方法上加注解
一、在xml文档中加入<context:component-scan base-package="com.nenu"/>
如果要使用注解,首先要在xml文件中配置注解模式(使项目允许使用注解):
在applicationContext加入<context:annotation-config/>标签:
<?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-3.0.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!-- 开启扫描 --> <context:component-scan base-package="com.nenu"/> </beans>
二、添加注解
1.UserDaoImpl
添加了@Component标签,因为是DAO层,所以也可用@Repository标签:
package com.nenu.dao.impl; import com.nenu.dao.UserDao; import org.springframework.stereotype.Component; @Component public class UserDaoImpl implements UserDao { @Override public void add() { System.out.println("UserDaoImpl add……"); } }
相当于配置了<bean id="userDaoImpl" class="com.nenu.dao.impl.UserDaoImpl"/>
2.UserServiceImpl
添加了@component标签,setter里面Resourse标签的name改为userServiceImpl
(因为是自动配置的,所以dao层的对象名字直接就是UserServiceImpl类名首字母小写)
当然,由于是Service层的逻辑,也可以用@Service:
package com.nenu.service.impl; import com.nenu.dao.UserDao; import com.nenu.dao.impl.UserDaoImpl; import com.nenu.service.UserService; import org.springframework.stereotype.Component; import javax.annotation.Resource; @Component public class UserServiceImpl implements UserService { private UserDao userDao;//面向接口 @Override public void add() { System.out.println("UserServiceImpl add……"); userDao.add(); } // 这是一个setter方法,设置userDao属性的值 @Resource(name = "userDaoImpl") public void setUserDao(UserDaoImpl userDao) { this.userDao = userDao; } // 这是构造方法,设置userDao属性的值 public UserServiceImpl(UserDao userDao) { this.userDao = userDao; } public UserServiceImpl(){} }
相当于配置<bean id="userServiceImpl" class="com.nenu.service.impl.UserServiceImpl"/>
3.测试
package com.nenu; import com.nenu.service.UserService; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class IocTest { @Test public void UserTest(){ //1.配置容器 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //2.取出容器中bean UserService userService = (UserService) applicationContext.getBean("userServiceImpl"); //3.调用 userService.add(); } }
取出容器中bean时,bean的指定名字别忘了改奥~
通过!!!
三、常用注解及总结
1.常用注解:
注解 解释 @Controller 应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的方法上。 @Service 应用在service层(业务逻辑层) @Reponsitory 应用在dao层(数据访问层) @Component
相当于一个默认的注解:<bean id="xxxxx" class="xxxxx"/>2.总结:
PS:附上昨天bean的自动装配链接,今天的看不懂建议同时参考昨天的博客:
到此Spring的全注解就完成啦!小伙伴们有问题欢迎一起探讨!加油~
原文地址:https://www.cnblogs.com/yangf428/p/12302982.html
时间: 2024-10-21 02:03:17