Spring基于注解分层开发

分层开发

文件列表

  • lib(jar)

    com.springsource.org.apache.commons.logging-1.1.1.jar

    spring-aop-4.2.4.RELEASE.jar

    spring-beans-4.2.4.RELEASE.jar

    spring-context-4.2.4.RELEASE.jar

    spring-core-4.2.4.RELEASE.jar

    spring-expression-4.2.4.RELEASE.jar

  • com.controller、com.dao、com.entity、com.service、com.test

    applicationContext.xml、application-dao、application-service

	<!--第一种方式:分布式-->
	<import resource="application-dao.xml"></import>
    <import resource="application-service.xml"></import>

    <bean id="userServlet" class="com.controller.UserServlet">
        <property name="us" ref="userService"></property>
    </bean>
	
	<!--第二种方式:扫描 解析注解-->
    <!--通知Spring扫描指定包,进行注解解析-->
    <context:component-scan base-package="com"></context:component-scan>

注解形式

  • @Repository:存储层Bean(Dao)
  • @Service:业务层Bean(Service)
  • @Controller:展示层Bean(Controller/Servlet)
  1. 使用@Repository将Dao类声明为Bean
@Repository("mysql")//加上括号,便于区分
public class UserDaoImpl implements UserDao{
    @Override
    public User login() {
        System.out.println("执行sql语句");
        return null;
    }
}
  1. Service实现类使用@Service注解
public class UserServiceImpl implements UserService{
    //@Autowired
    @Resource(name = "mysql")
    private UserDao dao;
    //public UserDao dao = new UserDaoImpl();
    @Override
    public User login() {
        return dao.login();
    }

    public UserDao getDao() {
        return dao;
    }

    public void setDao(UserDao dao) {
        this.dao = dao;
    }
}

  1. Controller层使用@Controller注解
@Controller
@Scope("prototype")
public class UserServlet {

    @Autowired
    private UserService us;

    public void login(){
        us.login();
    }

    public UserService getUs() {
        return us;
    }

    public void setUs(UserService us) {
        this.us = us;
    }
}

@Autowired

  • @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。
<!--通知Spring扫描指定包,进行注解解析-->
    <context:component-scan base-package="com"></context:component-scan>
@Controller
@Scope("prototype")//多例
public class UserServlet {

    @Autowired
    private UserService us;

    public void login(){
        us.login();
    }

    public UserService getUs() {
        return us;
    }

    public void setUs(UserService us) {
        this.us = us;
    }
}
  • 在使用@Autowired时,首先在容器中查询对应类型的bean

    如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据

    如果查询的结果不止一个,那么@Autowired会根据名称来查找。

    如果查询的结果为空,那么会抛出异常。解决方法时,使用required=false

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值