zoukankan      html  css  js  c++  java
  • Spring IoC 容器配置(半注解方式 )

     半注解半xml配置的开发方式

       把<bean> 属性注入<property>,使用注解方式的替换

    替换bean的注解:

    •   @Component, 标记在类上, 表示把这个类,交给Spring管理, 除dao,service,web层之外的类
    •   @Repository 用于注册DAO(持久层 )
    •   @Service 用于注册 Service(业务层)
    •   @Controller 用于注册 Action (web层), Servlet 不能使用

    1、@Component

    //entity类,或者三层之外的
    @Component("student")

    2、@Repository

    //userDaoImpl使用
    @Repository("userDao")

    3、@Service 

    //userServiceImpl使用
    @Service("userService")

    Spring默认不去扫描类上的注解, 在xml文件中, 配置扫描注解,属性context的命名空间的标签, spring的配置文件上,添加context命名空间头部

    <!--使用以context为前缀的标签 -->
    xmlns:context="http://www.springframework.org/schema/context"
    ...
    http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
    
    <!-- 扫描注解 base-package: 包名, 扫描这个包,以及这个包后代包下所有类上的注解 -->
    <context:component-scan base-package="spring" />
    <!-- 如果有多个包,用逗号隔开-->
    <context:component-scan base-package="x.y.z.service, x.y.z.controller" />

    属性注入的注解:

    普通属性: 基本数据,String类型

     @Value(“值”) : //把这个值直接赋值给属性
     @Value(“${properties文件的name值}”)  //读取某个Properties文件, 把这个文件的name的值赋值给属性

    javaBean属性的注入  使用注解注入, 省略set方法

      1) @Value(“#{beanId}”)   不推荐

      2) @Autowired   按照类型查找注入的bean

        结合 @Qualifier(beanId) 注解, 根据id查找bean

    @Autowired  //根据类型   推荐使用
    @Qualifier("queryRunner") //根据id

      3) @Resource  在Spring早期版本使用的

    @Resource //不写name按类型
    @Resource(name="userDao") //根据id

      4、 JSR-330规范 提供 @Inject @Named 注解

      必须 导入 javax.inject  jar包

    @Inject //根据类型
    @Named("userDao") //根据id
    private IUserDao userDao;

    实现代码:

    userDaoImpl层:

    //使用注解,将userDaoImpl交给spring容器,beanid 为userDao
    @Repository("userDao")
    public class UserDaoImpl implements IUserDao {
        //将userDao注入到UserDaoImpl中
        //使用 @Autowired 注解 结合 @Qualifier 注解
        @Autowired  //根据类型   推荐使用
        @Qualifier("queryRunner") //根据id
        private QueryRunner runner;

    userServiceImpl层:

    @Service("userService")
    public class UserServiceImpl implements IUserService {
        //使用@Resource 注解实现注入 ,不写name按类型
        //@Resource(name="userDao")
    
        //使用 @Inject @Named 注解 
            //必须 导入 javax.inject  jar包
        @Inject
        @Named("userDao")
        private IUserDao userDao;

    applicationContext.xml (根据Dbutils工具类实现和spring的整合使用)

    <!-- 带连接池的数据源:  c3p0 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 通过set方法赋值 -->
            <property name="driverClass" value="oracle.jdbc.OracleDriver"/>
            <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
            <property name="user" value="yosebook"/>
            <property name="password" value="123"/>
    </bean>
     <!-- 给Dbutils工具类,注入添加数据源 -->
     <bean id="queryRunner" class="org.apache.commons.dbutils.QueryRunner" scope="prototype">
         <!-- 通过有参构造方法   -->
             <constructor-arg name="ds" ref="dataSource"/>
         </bean>
    <!-- 配置全局加载配置文件 -->
    <context:component-scan base-package="com.zl.spring"/>
  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/64Byte/p/13088422.html
Copyright © 2011-2022 走看看