zoukankan      html  css  js  c++  java
  • spring日记(二)

    一、spring依赖注入的方式

    1.通过set方式

    <bean id="hello" class="com.zhiyou100.cyf.bean.Hello" autowire="byType">
            <property name="name" value="${hello.name}"></property>
            <property name="age" value="${hello.age}"></property>
        </bean>

    2.通过构造方法

    <bean id="hello2" class="com.zhiyou100.cyf.bean.Hello">
            <constructor-arg index="0" value="辽宁" />
            <constructor-arg index="1" value="1" />

    二、依赖注入的数据类型

      1.基本数据类型和字符串 使用value

      2.如果是指向另一个对象的引用,使用ref

    <!-- 。管理类:类的创建以及属性的注入
            bean:表示管理的类标签
            class:具体的类
            id:标注该标签 
            property中
            如果属性为:Sting及基本类型或包装类,用value
            如果属性为:其他对线,用ref
            -->
        <bean id="mysql" class="com.zhiyou100.cyf.dao.MysqlUserDao"/>
        <bean id="oracle" class="com.zhiyou100.cyf.dao.OracleUserDao"/>
        <bean id="s" class="com.zhiyou100.cyf.service.Service">
            <property name="mdao" ref="mysql"></property>
        </bean>

      3.如果注入的属性为list类型,见图片,在property中有list标签,里面

       4.如果注入的为map类型,property或constructor中有map标签,其中的每个entry的键和值都可以为bean

    <bean id="hello2" class="com.zhiyou100.cyf.bean.Hello">
            <constructor-arg index="0" value="辽宁" />
            <constructor-arg index="1" value="1" />
            <constructor-arg index="2">
                <map>
                    <entry key="1" value-ref="stu1">
                    </entry>
                    <entry key="2" value-ref="stu2">
                    </entry>
                    <entry key="3" value-ref="stu3">
                    </entry>
                </map>
            </constructor-arg>
    
        </bean>
        <bean id="stu1" class="com.zhiyou100.cyf.bean.Student">
            <property name="address" value="北京"></property>
        </bean>
        <bean id="stu2" class="com.zhiyou100.cyf.bean.Student">
            <property name="address" value="南京"></property>
        </bean>
        <bean id="stu3" class="com.zhiyou100.cyf.bean.Student">
            <property name="address" value="上海"></property>
        </bean>

    三、bean的作用域

      其默认为单例模式

    可以修改为原始模式,设置bean的属性scope为prototype

    <bean id="student" class="com.zhiyou100.cyf.bean.Student" scope="prototype">
            <property name="address" value="${user.name}"></property>
        </bean>

    四、自动注入。可以设置bean的autowire属性为byType或byName

    byType:根据该类的属性类型来自动为它注入相应的对象

    byName:根据bean的id寻找该类的属性名并且为其注入相应的对象

    <bean id="userController" class="com.zhiyou100.cyf.controller.UserController" autowire="byType"></bean>

     另外可以在头标签设置默认注入方式

    default-autowire="byName"

    五、在spring配置文件中引入属性文件。与springmvc类似,引入的方式

    <!-- 。如果要引入多个文件,则用逗号 , 分隔classpath:mo.properties
            这是spring2.5版本以后的写法,之前写法为
            
         <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
             <property name="location" value="classpath:config.properties"></property>
         </bean>
         -->
        <context:property-placeholder location="classpath:config.properties"/>

    注意,属性文件的部分key可能会与系统变量名重合,如user.name

    六、使用注解的方式

      1.再引入aop的 jar包

      2.配置文件中使用包扫描

    <context:component-scan base-package="com.zhiyou100.cyf"></context:component-scan>

      3.在相应的类加上注解

    @Repository   持久化注解。

    @Service 业务层注解

    @Controller 控制层注解

    这些均相当于在配置文件中注册bean

    下面是在需要注入的属性上使用

    @Autowired 自动注入 按照类型帮你自动注入,如果由多个类型相同的那么就会在按照名称注入。(建议使用这个)

    @Resouce  自动注入 按照名称注入,如果没有相同名称的bean那么会按照类型帮你注入。 它可以指定名称来注入。

    resource中的属性更多 name属性可以与byName配合,不用本身的属性名

    controller代码

    @Controller(value="userController")//设置id
    public class UserController {
        @Autowired
        private UserService userService;
        public void selectById(int id) {
            userService.selectById(id);
        }
    }

    service代码

    @Service
    public class UserServiceImp implements UserService{
        @Autowired
        private UserDao userDao;
        @Override
        public void selectById(int id) {
            userDao.selectById(id);
        }
    
    }

    dao代码

    @Repository
    public class UserDaoImp implements UserDao{
    
        @Override
        public void selectById(int id) {
            System.out.println("根据id查询"+id);    
        }
    }
  • 相关阅读:
    调用Win32 API netapi32.dll 实现UNC(网络共享)连接的管理(一)
    一个重写Page基类的例子
    36进制进位算法例子
    关于.net 中调用script的alert后 css失效的办法
    Javascript:keyCode键码值表
    Url地址重写,利用HttpHander手工编译页面并按需生成静态HTML文件
    在.NET程序中正确使用String类型
    Sql Server中自动序号的方法
    托管和非托管的关系和区别
    Oracle 格式化
  • 原文地址:https://www.cnblogs.com/psxfd4/p/11478947.html
Copyright © 2011-2022 走看看