Spring研究 (2) 添加Bean

原创 2004年08月29日 10:44:00

在上次的MVC基础上,我们准备给Controller增加Model,为此创建一个Account Bean Class:

public class Account implements java.io.Serializable {
    private String username;
    private String password;

    public String getUsername() { return this.username; }
    public void setUsername(String username) { this.username = username; }

    public String getPassword() { return this.password; }
    public void setPassword(String password) { this.password = password; }
}

然后修改SpringappController:

public class SpringappController implements Controller {
    private Account account;
    public Account getUserAccount() { return this.account; }
    public void setUserAccount(Account account) { this.account = account; }

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        return new ModelAndView("view.jsp", "model", account.getUsername());
    }
}

为了向SpringappController注入Bean,我们修改配置文件springapp-servlet.xml:

    <!-- 申明一个Account Bean -->
    <bean id="adminAccount" class="Account">
        <property name="username">
            <value>administrator</value>
        </property>
        <property name="password">
            <value>1234567</value>
        </property>
    </bean>
    <bean id="springappController" class="SpringappController">
        <!-- 注入到Controller -->
        <property name="userAccount">
            <ref bean="adminAccount" />
        </property>

    </bean>

OK,运行Ant,然后启动Tomcat,结果输出:

Result: administrator

注入成功!但是在Controller中放一个Account肯定是不合逻辑的,我们准备做一个用户登录功能,为此创建一个AccountManager Bean:

public class AccountManager implements java.io.Serializable {
    Account getAccount(String username, String password) {
        // TODO...
        Account account = new Account();
        account.setUsername(username);
        account.setPassword(password);
        return account;
    }
}

然后把SpringappController改为:

public class SpringappController implements Controller {
    private AccountManager manager;
    public AccountManager getManager() { return this.manager; }
    public void setManager(AccountManager manager) { this.manager = manager; }


    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        return new ModelAndView("view.jsp", "model",
            manager.getAccount(username, password).getUsername());
    }
}

修改springapp-servlet.xml:

    <bean id="accountManager" class="AccountManager" />
    <bean id="springappController" class="SpringappController">

        <property name="manager">
            <ref bean="accountManager" />
        </property>

    </bean>

编译,运行,输入:http://localhost:8080/springmvc/hello.c?username=xuefeng&password=1234

结果显示:

Result: xuefeng

OK,现在只要创建一个html form,Post到Controller然后在AccountManager中验证Username和Password就可以了。

spring 动态创建bean

应用场景:查询业务为主,多个数据源,根据不同的请求,切换到不同的数据源;   1:创建DynamicDataSource 扩展一个Spring提供的AbstractRoutingDataSource,...
  • getdate
  • getdate
  • 2014年02月27日 16:51
  • 17972

Spring Bean注入、销毁时执行指定行为

注入后的行为Spring提供了2种方式在Bean全部属性设置成功后执行的特定行为: 1. 使用init-method属性。 2. 实现InitializingBean接口。 如果某个Bean类实...
  • sweatOtt
  • sweatOtt
  • 2017年03月20日 18:14
  • 777

Spring动态管理IoC容器中的Bean

以下为工具类,此工具类需要在Spring中注册。有动态获取Bean的方法,也有把Bean动态交给IoC容器管理的方法。可直接copy复用: 实现接口:org.springframework.cont...
  • z100871519
  • z100871519
  • 2015年06月05日 14:51
  • 1074

Spring AOP之高级应用--在已有的bean中引入行为

问题: 有时候有一组共享公共行为类。在OOP中,它们必须扩展相同的基类或者实现相同的接口。 此外,Java的单继承机制仅允许一个类最多扩展一个基类。所以,不能同时从多个实现类中继承行为。 解决方案: ...
  • zhoupeng_love
  • zhoupeng_love
  • 2014年03月20日 14:09
  • 2054

Spring 初探(五)(Spring Bean 自动装配与自定义监听事件)

现在通行的使用bean的方法是不通过xml进行配置,而仅仅采用java 内置的类指明bean及相应的依赖关系,下面展开叙述。 @Configuration可以声明某个类是作为配置类,在这样的类中 ...
  • sinat_30665603
  • sinat_30665603
  • 2016年12月21日 17:24
  • 1006

spring中bean的基本xml配置

在spring容器内拼凑bean叫作装配。装配bean的时候,你是在告诉容器,需要哪些bean,以及容器如何使用依赖注入将它们配合在一起。     理论上,bean装配可以从任何资源获得,包括属性文...
  • liyisong2008
  • liyisong2008
  • 2015年01月20日 11:35
  • 3556

Spring 给bean配置list<bean>列表参数

public class OmsSetting extends AppSetting { ... public static class CompanyBean implements Serializ...
  • rocklee
  • rocklee
  • 2017年06月24日 09:08
  • 756

【Spring学习24】容器扩展点:后置处理器BeanFactoryPostProcessor

上篇说到的BeanPostProcessor(Bean后置处理器)常用在对bean内部的值进行修改;实现Bean的动态代理等。 BeanFactoryPostProcessor和BeanPostPr...
  • soonfly
  • soonfly
  • 2017年04月06日 21:34
  • 641

Spring bean的三种创建方式

1、创建Spring工程 使用eclipse创建一个Spring工程,一个简单的方法就是先创建一个Java工程,然后将Spring的Jar包全部放入到工程里面即可开始编写基于Spring框架的程序。...
  • LucienDuan
  • LucienDuan
  • 2016年05月07日 00:12
  • 7089

Spring中使用内部Bean关联多个Bean,不能被外部Bean关联

1:javaBean package com.study.bean; public class Car {      private String brand; private St...
  • pangqiandou
  • pangqiandou
  • 2016年11月18日 21:46
  • 749
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring研究 (2) 添加Bean
举报原因:
原因补充:

(最多只允许输入30个字)