本来是打算写一个关于HttpServletRequest的工具类来保存session,但是发现request可以注入到Controller层,但无法注入到工具类里面,针对此情况出来了这篇文章。
这篇文章主要讲两个内容:
1、如何定义bean.
2、如何将bean注入.
一、定义bean的两种方式
1、通过配置文件来定义bean:
<bean id="sessionUtils" class="com.drink.common.utils.SessionUtils"></bean>
2、通过注解的形式定义(此方式比较流行):
@Component: 可以将所有的类转换成bean
@Repository:用于对DAO实现类进行标注;
@Service:用于对Service实现类进行标注;
@Controller:用于对Controller实现类进行标注
@Configuration:将一个POJO标注为定义Bean的配置类
@Bean:定义一个产生bean的方法
@Configuration
public class SessionUtils{
}
此注解就相当于:
<bean id="sessionUtils" class="com.drink.common.utils.SessionUtils"></bean>
@Bean
public SessionUtils createUtils(){
return new SessionUtils();
}
在容器中生成一个名字为createUtils的bean
第二:关于注入
使用注解方式最为流行:
注解分为两种:
byType @Autowired
byName @Resource
@Qualifier指定注入Bean的名称(不使用此注解,默认情况下名称为bean的首字母小写的名称)
如果希望Spring即使找不到匹配的Bean完成注入也不用抛出异常,那么可以使用@Autowired(required=false)
属性注入:
SessionUtils sessionUtils;
public void setSessionUtils(SessionUtils sessionUtils) {
this.sessionUtils = sessionUtils;
}
<bean id="sessionUtils" class="com.drink.common.utils.SessionUtils"></bean>
<bean id="sysLoginController" class="com.drink.modules.sys.controller.SysLoginController">
<property name="sessionUtils" ref="sessionUtils"></property>
</bean>
构造方法输入:
SessionUtils sessionUtils;
public void setSessionUtils(SessionUtils sessionUtils) {
this.sessionUtils = sessionUtils;
}
public SysLoginController(SessionUtils sessionUtils) {
this.sessionUtils = sessionUtils;
}
<bean id="sessionUtils" class="com.drink.common.utils.SessionUtils"></bean>
<bean id="sysLoginController" class="com.drink.modules.sys.controller.SysLoginController">
<constructor-arg ref="sessionUtils"></constructor-arg>
</bean>