所谓注解,就是一个类,使用@注解名称,在实际开发中,也常用注解进行开发,可以减少代码量
注解形式:
@Component 取代<bean class =" ">
@Component("id") 取代<bean class=" " id=" ">
在Web开发中,提供3个@Component注解衍生注解取代<bean class="">
@Repository(“名称”):dao层
@Service(“名称”):service层
@Controller(“名称”):web层
@Autowired:自动根据类型注入
@Qualifier(“名称”):指定自动注入的id名称
@Resource(“名称”)
@ PostConstruct 自定义初始化
@ PreDestroy 自定义销毁
例子
component-scan是扫描指定包下的文件,看下是否有包含注解,base-package是包名,可以指定总包的名字,不过我这个例子中直接创建了简单的包名,并没有总的包名,所在写了三个包名,如果有总包oyb的话,domain,service,test包都是oyb包下的子包,那么base-package = "oyb"就可以了
在类文件中添加注解
在test中
测试结果:
例子2(自动注入以及Componet的衍生注解)
UserDaoImpl这个类:
package oyb.dao; import oyb.domain.User; import org.springframework.stereotype.Service; @Service public class UserDaoImpl implements UserDao { @Override public void add(User user) { System.out.println("dao添加用户:"+user); } }
UserServiceImpl这个类:
package oyb.service; import oyb.dao.UserDao; import oyb.domain.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component("userService") public class UserServiceImpl implements UserService { @Autowired //自动注入 UserDao userdao; @Override public void add(User user) { System.out.println("service添加用户"+ user); userdao.add(user); } }
UserAction这个类:
package oyb.action; import oyb.domain.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import oyb.service.UserService; @Controller("UserAction") public class UserAction { @Autowired UserService userService; public void add(){ System.out.println("action添加用户"); User user = new User(); user.setUsername("OYB"); user.setPassword("123456"); userService.add(user); } }
测试方法:
@Test public void test3(){ ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); UserAction userAction = (UserAction) context.getBean("UserAction"); userAction.add(); }
测试结果:
其实所有的xml文件下的bean都可以通过注解来配置,从而减少xml的配置代码,开发也更加简单,配置的注解的方法都是一样的,这里就不做过多的介绍了
原文:https://www.cnblogs.com/ouyangbo/p/10597189.html