使用Spring注解注入属性

1.1. 使用注解以前我们是怎样注入属性的

类的实现:

public class UserManagerImpl implements UserManager {
     private UserDao userDao;
     public void setUserDao(UserDao userDao) {
         this.userDao = userDao;
     }
     ...
}

配置文件:

< bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl">
     < property name="userDao" ref="userDao" />
< /bean>
< bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">
     < property name="sessionFactory" ref="mySessionFactory" />
< /bean>

1.2. 引入@Autowired注解(不推荐使用,建议使用@Resource)

类的实现(对成员变量进行标注)

public class UserManagerImpl implements UserManager {
     @Autowired
     private UserDao userDao;
     ...
}

或者(对方法进行标注)

public class UserManagerImpl implements UserManager {
     private UserDao userDao;
     @Autowired
     public void setUserDao(UserDao userDao) {
         this.userDao = userDao;
     }
     ...
}

配置文件

< bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl" />
< bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">
     < property name="sessionFactory" ref="mySessionFactory" />
< /bean>

@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。以上两种不同实现方式中,@Autowired的标注位置不同,它们都会在Spring在初始化userManagerImpl这个bean时,自动装配userDao这个属性,区别是:第一种实现中,Spring会直接将UserDao类型的唯一一个bean赋值给userDao这个成员变量;第二种实现中,Spring会调用 setUserDao方法来将UserDao类型的唯一一个bean装配到userDao这个属性。

1.3. 让@Autowired工作起来

要使@Autowired能够工作,还需要在配置文件中加入以下代码

< bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />

时间: 2024-11-02 15:05:53

使用Spring注解注入属性的相关文章

为什么spring注解注入失败?

问题描述 spring版本3.0.5@Componentpublic class IndexFacade {@Autowiredprivate UserService userService;其中 userService访问时是null注解扫描的包<!-- 扫描指定package下所有带有如@controller,@services,@resource,并把所注释的注册为Spring Beans --> <context:component-scan base-package="

关于Spring 注解注入对象问题

问题描述 问题描述如下:A 类是一个WS入口,调用B类的业务. 然后在B类里面注入service ,注入的service为空.public class A{   private B b = new B();   public void test(){       b.method();}} public class B{    @Resource     private IEsbForEmpBusinessService esbForEmpBusinessService;     在这个类里面的

spring-Spring注解注入配置文件的值

问题描述 Spring注解注入配置文件的值 我在service层想获取properties文件中的值,如果用spring注解的方式去获取需要把Service类也注解为Component么? 解决方案 在Spring之前 在一个对象中调用另外一个类,需要在其内部实例化这个类,这样的结果是一旦类的数目增加代码的耦合度将变的非常高.为了降低耦合度,我们引入了Spring,Spring可以通过注入来降低代码的耦合度.即把生成对象的控制权交给容器,代码要做的只是使用这些对象进行逻辑或者持久化操作,这就是控

spring注解-service利用注解注入,会空指针异常。而用getBean方式则可以获取到service。

问题描述 service利用注解注入,会空指针异常.而用getBean方式则可以获取到service. spring配置文件如下: <?xml version=""1.0"" encoding=""UTF-8""?> xmlns:context=""http://www.springframework.org/schema/context"" xmlns:xsi="

spring注解无法读取配置文件的属性,时间可以读取,求大神帮忙看看

问题描述 spring注解无法读取配置文件的属性,时间可以读取,求大神帮忙看看 //运用注解读取配置文件 @Component @ComponentScan @Configuration @PropertySource({ "classpath:/info.properties" }) public class PropertiesResolve { private static Logger logger = Logger.getLogger(PropertiesResolve.cl

spring.net如何给母版页master注入属性

问题描述 如题,spring.net如何给母版页master注入属性<objectname="MasterPage"abstract="true"><propertyname="MasterPageFile"value="~/home.master"></property></object><objecttype="Default.aspx"parent

《Spring攻略(第2版)》——1.10 用@Required注解检查属性

1.10 用@Required注解检查属性 1.10.1 问题Spring的依赖检查功能仅能检查某些类型的所有属性.它的灵活性不够,不能仅检查特定的属性.在大部分情况下,你希望检查特定的属性是否设置,而不是特定类型的所有属性. 1.10.2 解决方案RequiredAnnotationBeanPostProcessor是一个Spring bean后处理器,检查带有@Required注解的所有Bean属性是否设置.Bean后处理器是一类特殊的Spring bean,能够在每个Bean初始化之前执行

请问spring构造注入的问题

问题描述 <beans:bean id="securityMetadataSource" class="com.security.MyInvocationSecurityMetadataSource"> <beans:constructor-arg><beans:ref bean="resourcesService"/></beans:constructor-arg></beans:bean&

这是spring注解的问题吗?应该怎么解决

问题描述 这是spring注解的问题吗?应该怎么解决 Error creating bean with name 'billAction': Injection of resource fields failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'billServiceImp': Injection of reso