神刀安全网

Spring之使用注解实例化Bean并注入属性

1.准备工作

(1)导入jar包

除了上篇文章使用到的基本jar包外,还得加入aop的jar包,所有jar包如下

Spring之使用注解实例化Bean并注入属性

所需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">     <!-- 开启注解扫描,到包里面扫描类、属性、方法上是否有注解 -->     <context:component-scan base-package="com.codeliu"/> </beans> 

2.注解实例化Bean

(1)实例化Bean有四个注解

  • @Component
  • @Service:业务层
  • @Controller:WEB层
  • @Repository:持久层

虽然分了层,但目前这四个注解的功能是一样的。

@Service(value = "user") //相当于bean标签中的id,四种方式功能一样 // @Component(value = "user") // @Controller(value = "user") // @Repository(value = "user") @Scope(value = "singleton") public class User {     public void print() {         System.out.println("user......");     } } 
    @Test     /**      * 使用注解实例化User类      */     public void testUser() {         // 读取配置文件         @SuppressWarnings("resource")         ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");         User user = (User)context.getBean("user");         user.print();     } 

3.注解为属性赋值

首先来个UserDao

@Component(value = "userDao") public class UserDao {     public void print() {         System.out.println("userdao......");     } } 

再来个service

@Service(value = "userService") public class UserService {     // 注入对象类型的属性,不用提供set方法     // 1.使用自动装配     // @Autowired  // 为byType类型,如果有多个相同类型的,得配合@Qualifier注解     // private UserDao userDao;          // 2.不使用自动装配     @Resource(name = "userDao")     private UserDao userDao;          // 注入普通类型的属性     @Value(value = "CodeTiger")     private String name;          public void print() {         System.out.println("UserService......");         userDao.print();         System.out.println(name);     } } 

为属性赋值,我们可以使用自动装配,也可以手动赋值。

    @Test     /**      * 使用注解注入属性      */     public void testUserService() {         @SuppressWarnings("resource")         ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");         UserService service = (UserService)context.getBean("userService");         service.print();     } 

4.注解和xml结合使用

当然我们也可以同时使用注解和xml,一般我们在xml中实例化Bean,使用注解为属性赋值。

这里就不贴代码了,原理都一样。

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » Spring之使用注解实例化Bean并注入属性

分享到:更多 ()