spring 普通类 怎么注入bean
2个回答
展开全部
spring在普通类中注入bean实例 或注入静态变量的bean
Spring的注入有一个问题就是普通类没有办法获得Bean文件中的bean实例。这就是如果是在Web的Servlet环境中可以通过WebApplicationContextUtils,如果是普通类就不好处理了。这需
要一点设计的技巧。下面是一个静态类使用Bean文件中实例的例子
1、如果是在配置文件中配置来注入:
public class UserinfoUtil
{
private IUserInfo userInfo;
private static UserinfoUtil info;
public void setUserInfo(IUserInfo userInfo)
{
this.userInfo = userInfo;
}
public void init()
{
info = this;
info.userInfo = this.userInfo;
}
public static int addUserLoginCnt(String phonenumber)
{
return info.userInfo.addUserLoginCnt(phonenumber);
}
}
相应的bean的配置:
相应的Bean文件的配置
<bean id="userinfoUtil" class="com.huawei.aimi.webportal.service.UserinfoUtil" init-method="init">
<property name="userInfo" ref="userInfo"/>
</bean>
2、用注解的方式注入:
public class UserinfoUtil
{
@Autowired
private IUserInfo userInfo;
private static UserinfoUtil info;
public void setUserInfo(IUserInfo userInfo)
{
this.userInfo = userInfo;
}
@PostConstruct
public void init()
{
info = this;
info.userInfo = this.userInfo;
}
public static int addUserLoginCnt(String phonenumber)
{
return info.userInfo.addUserLoginCnt(phonenumber);
}
}
Spring的注入有一个问题就是普通类没有办法获得Bean文件中的bean实例。这就是如果是在Web的Servlet环境中可以通过WebApplicationContextUtils,如果是普通类就不好处理了。这需
要一点设计的技巧。下面是一个静态类使用Bean文件中实例的例子
1、如果是在配置文件中配置来注入:
public class UserinfoUtil
{
private IUserInfo userInfo;
private static UserinfoUtil info;
public void setUserInfo(IUserInfo userInfo)
{
this.userInfo = userInfo;
}
public void init()
{
info = this;
info.userInfo = this.userInfo;
}
public static int addUserLoginCnt(String phonenumber)
{
return info.userInfo.addUserLoginCnt(phonenumber);
}
}
相应的bean的配置:
相应的Bean文件的配置
<bean id="userinfoUtil" class="com.huawei.aimi.webportal.service.UserinfoUtil" init-method="init">
<property name="userInfo" ref="userInfo"/>
</bean>
2、用注解的方式注入:
public class UserinfoUtil
{
@Autowired
private IUserInfo userInfo;
private static UserinfoUtil info;
public void setUserInfo(IUserInfo userInfo)
{
this.userInfo = userInfo;
}
@PostConstruct
public void init()
{
info = this;
info.userInfo = this.userInfo;
}
public static int addUserLoginCnt(String phonenumber)
{
return info.userInfo.addUserLoginCnt(phonenumber);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询