spring学习总结

spring学习总结spring学习总结

大家好,又见面了,我是你们的朋友全栈君。

    最近几天学习了一些关于spring的东西,以前对spring的认识最大的就是控制反转和依赖注入,原理也不是很清楚。今天就谈谈控制反转和依赖注入新的认识。

    控制反转就是把创建对象的过程交给spring去管理。最初我们采用new来创建一个新的对象,加入了spring之后,就可以通过spring来创建,主要有两种方式,一种是通过配置文件,另一种是通过注解。 

如果是通过配置文件来创建对象的代码为:

<bean id="userService" class="cn.tgb.UserService"/〉

    class指的是需要实例化的类,这里是类的完整路径。

创建一个UserService类的对象:

public void testUser(){
    //1.加载spring配置文件
    ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
    //2.得到创建的对象
    UserService user = context.getBean("userService");
}

通过注解创建对象就是在要实例的类上面加上注解。

@Component(value="user")
public class UserService{
   public void add(){
       system.out.println("add-method");
   }
}

创建对象的注解有四个,分别为:Component,Controller,Service,Repository。

属性注入就是创建对象的时候,向类中的属性赋值。在spring中,我们可以通过set方法或有参的构造函数注入。比如说我们通过有参数的构造函数注入:

向UserService类中的username属性注入值为“张三”:

<!--使用有参数的构造注入属性-->
<bean id="userService" class="cn.tgb.UserService"〉
    <!--使用有参构造注入,name:属性名称,value:具体的属性值-->
    <constructor-arg name="username" value="张三"/>
<bean/>

UserService类:

public class UserService{
    private String username;
    
    public UserService(String username){
        this.username = username;
    }

    public void add(){
         System.out.println("add user:" + username);
    }
}

使用set方法注入:

public class UserService{
    private String username;
    
    public setUserName(String username){
        this.username = username;
    }

    public void add(){
         System.out.println("add user:" + username);
    }
}

配置文件:

<!--使用set方法注入属性-->
<bean id="userService" class="cn.tgb.UserService"〉
    <!--注入属性值,name:属性名称,value:具体的属性值-->
    <property name="username" value="张三"><property/>
<bean/>

    属性的注入跟创建对象一样,既可以通过配置文件设置,也可以用注解的方式。注入属性的两个关键字为:Autowired和Resource。把注解加到对应的属性上面就可以。

     感觉spring刚刚入了一点门,接下来再深入学习。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105652.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • DDD理论学习系列(13)– 模块

    DDD理论学习系列(13)– 模块"DDD理论学习系列——案例及目录"1.引言Module,即模块,是指提供特定功能的相对独立的单元。提到模块,你肯定就会想到模块化设计思想,也就是功能的分解和组合。对于简单问

  • Linux常用操作命令大全「建议收藏」

    Linux常用操作命令大全「建议收藏」Linux常用操作命令大全

  • Python爬取书包网文章实战总结

    Python爬取书包网文章实战总结这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入爬取书包网文…

  • Android studio 入门教程(案例)

    Android studio 入门教程(案例) 1.创建一个Android项目,点击File-&gt;New-&gt;NewProject,其中的open是打开一个Android项目2.输入项目的名称test,此项目放在E盘下,然后点击Finish3.选择Android虚拟机的版本,版本越低运行起来越快,其他的无需勾选。 4.选择Android的模板,选择基础类android的空模板Empty…

  • Java多线程系列—线程通信机制wait notify notifyAll(03)

    Java多线程系列—线程通信机制wait notify notifyAll(03)线程通信机制waitnotifynotifyAll本课时我们主要学习wait/notify/notifyAll方法的使用注意事项。我们主要从三个问题入手:为什么wait方法必须在synchronized保护的同步代码中使用?为什么wait/notify/notifyAll被定义在Object类中,而sleep定义在Thread类中?wait/notify和sleep方法的异同?wait必须在synchronized保护的同步代码中使用为什么wai

  • vim的复制粘贴命令_vim编辑器常用命令

    vim的复制粘贴命令_vim编辑器常用命令接触linux操作系统之后使用vi/vim编辑器用的就比较多,其实vi/vim编辑文件特别方便,但是一些常见的指令模式下的命令确很容易忘,特别是复制剪切粘贴经常忘,所以小结下以后查用起来比较方便。1.复制剪切粘贴撤销复制:复制一行则:yy复制三行则:3yy,即从当前光标+下两行。复制当前光标所在的位置到行尾:y$复制当前光标所在的位置到行首:y^剪切:剪切一行:dd前切三

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号