码迷,mamicode.com
首页 > 编程语言 > 详细

spring日记(二)

时间:2019-09-07 00:35:13      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:jar   classpath   figure   val   map   建议   ESS   nts   print   

一、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);    
    }
}

 

spring日记(二)

标签:jar   classpath   figure   val   map   建议   ESS   nts   print   

原文地址:https://www.cnblogs.com/psxfd4/p/11478947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!