Spring入门详细教程(二)

前言

本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇。链接如下:

Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/10165538.html

一、spring注入方式

1、set方法注入

<bean name="user" class="com.jichi.entity.User" >
  <property name="name" value="小明"></property>
  <property name="age" value="18"></property>
</bean>

2、构造方法注入

<bean name="user" class="com.jichi.entity.User" >
    <constructor-arg name="name" value="小红" ></constructor-arg>
  <constructor-arg name="age" value="50"></constructor-arg>
</bean>

3、p名称空间注入

xmlns:p="http://www.springframework.org/schema/p"
<bean name="user" class="com.jichi.entity.User" p:name="小白" p:age="10"></bean>

4、spel表达式注入

    <bean name="user" class="com.jichi.entity.User">
        <property name="name" value="小红"></property>
        <property name="age" value="18"></property>
    </bean>
    <bean name="user1" class="com.jichi.entity.User">
        <property name="name" value="#{user.name}"></property>
        <property name="age" value="#{user.age}"></property>
    </bean>

二、spring复杂类型注入

public class Collection {

    public String[] arr;

    public List<String> list;

    public Map<String,Object> map;

    public Properties props;

    public String[] getArr() {
        return arr;
    }

    public void setArr(String[] arr) {
        this.arr = arr;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public Map<String, Object> getMap() {
        return map;
    }

    public void setMap(Map<String, Object> map) {
        this.map = map;
    }

    public Properties getProps() {
        return props;
    }

    public void setProps(Properties props) {
        this.props = props;
    }

    @Override
    public String toString() {
        return "Collection [arr=" + Arrays.toString(arr) + ", list=" + list + ", map=" + map + ", props=" + props + "]";
    }

} 

1、数组类型注入

        <bean name="collect" class="com.jichi.entity.Collection">
            <property name="arr">
                <array>
                    <value>xiaohei</value>
                    <value>xiaobai</value>
                </array>
            </property>
        </bean>

2、list类型注入

        <bean name="collect" class="com.jichi.entity.Collection">
            <property name="list">
                <list>
                    <value>xiaohei</value>
                    <value>xiaobai</value>
                </list>
            </property>
        </bean>

3、map类型注入

        <bean name="collect" class="com.jichi.entity.Collection">
            <property name="map">
                <map>
                    <entry key="name" value="xiaohei"></entry>
                    <entry key="age" value="18"></entry>
                </map>
            </property>
        </bean>

4、properties类型注入

        <bean name="collect" class="com.jichi.entity.Collection">
            <property name="props">
                <props>
                    <prop key="name">xiaohei</prop>
                    <prop key="age">18</prop>
                </props>
            </property>
        </bean>

三、配置spring随web项目启动初始化

在web.xml中配置。

 <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
 <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

四、spring的分配置文件

方式一:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext1.xml","applicationContext2.xml")

方式二:

<import resource="applicationContext.xml"></import>

五、spring注解配置

1、开启注解扫描

<context:component-scan base-package="com.jichi.entity"></context:component-scan>

扫描com.jichi.entity下的所有类中的注解。

2、在类上添加注解

@Component
public class User {
}

六、spring常用注解

1、@Componet,@Controller,@Service,@Repository四个组件注解,作用在类上。四个注解并无区别,只是为了方便区分。

2、@Scope注解,作用在类上。

@Scope(scopeName="singleton")  //单例模式
public class User {
}
@Scope(scopeName="prototype")  //多例模式
public class User {
}

3、@Value用于注入普通类型值

第一种方式:作用在属性上,通过反射的filed值,破坏了对象的封装性。

@Value("xiaohei")
private String name;

第二种方式:通过set方法赋值,不破坏对象的封装性。

    @Value("xiaobai")
    public void setName(String name) {
        this.name = name;
    }

4、@Autowired,@Resource,@Qualifier注解

引用类型的装配方式,详细区别请看之前的博客。

    @Autowired
    private Car car;
    @Resource
    private Car car;

5、@PostConstruct与@PreDestroy

    @PostConstruct   //创建对象前调用
    public void init(){
        System.out.println("初始");
    }
    @PreDestroy     //对象销毁前调用
    public void destory(){
        System.out.println("销毁");
    }

原文地址:https://www.cnblogs.com/jichi/p/10171343.html

时间: 2024-10-10 06:10:20

Spring入门详细教程(二)的相关文章

Spring入门详细教程(三)

前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/10165538.html Spring入门详细教程(二) https://www.cnblogs.com/jichi/p/10176601.html 本篇主要讲解spring的aop相关. 一.aop的概念 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编

Spring入门详细教程(一)

一.spring概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建.简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架. 二.Spring特点 1.方便解耦,简化开发. 2.AOP编程的支持. 3.声明式事务的支持. 4.方便程序的测试 5.方便集成各种优秀框架 三.

经典Spring入门基础教程详解

经典Spring入门基础教程详解 https://pan.baidu.com/s/1c016cI#list/path=%2Fsharelink2319398594-201713320584085%2F%E7%BB%8F%E5%85%B8Spring%E5%85%A5%E9%97%A8%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B%E8%AF%A6%E8%A7%A3&parentPath=%2Fsharelink2319398594-201713320584085 博达远

Xcode和github入门详细教程

Xcode和github详细教程! 主要是参考了现在网上的一些资料给没整过的人一个详细的指南. (1)先在github上注册账号,自行解决! (2)在导航栏右上角new一个repository(仓库). (3)填写仓库的名称.描述等信息.第二部是设置公开或者私人项目,隐私项目适合于公司的代码托管但是是收费的. (4)下面就不用管了,在MAC电脑上生成你的ssh秘钥,此处转载http://www.cnblogs.com/sorex/archive/2012/05/25/2517763.html.

Xcode和github入门详细教程!

Xcode和github详细教程! 主要是参考了现在网上的一些资料给没整过的人一个详细的指南. (1)先在github上注册账号,自行解决! (2)在导航栏右上角new一个repository(仓库). (3)填写仓库的名称.描述等信息.第二部是设置公开或者私人项目,隐私项目适合于公司的代码托管但是是收费的. (4)下面就不用管了,在MAC电脑上生成你的ssh秘钥,此处转载http://www.cnblogs.com/sorex/archive/2012/05/25/2517763.html.

Spring Boot2 系列教程(二十七)Nginx 极简扫盲入门

上篇文章和大家聊了 Spring Session 实现 Session 共享的问题,有的小伙伴看了后表示对 Nginx 还是很懵,因此有了这篇文章,算是一个 Nginx 扫盲入门吧! 基本介绍 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务. Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日. Nginx 特点是占有内存少,

android开发入门详细教程

随着移动端开发的火热,越来越多的IT程序员转做移动开发,做J2EE的转做Android开发,现在让麦子学院android开发老师给大家讲讲一些入门经验,希望能给你带来帮助. 工具/原料 .        JDK,ADT,JAVA 方法/步骤 1.   开发工具的准备: 第一个工具:JDK1.7, 第二个工具:Android Developer Tools简称ADT. JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)  只需以上两个工具就可以进行开发

MVC5+EF6 入门完整教程二

从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分. ASP.NET MVC抛弃了WebForm的一些特有的习惯,例如服务器端控件,ViewState这些东西,让Web回归原始的状态,Web是什么样子就是什么样子.而谈到一个Web Application的UI,涉及到的无非就是html.css. js这些东西. 文章提纲 概述 重要概念介绍 建立 注册/登录UI 步骤(静态页面àViewà功能) 概述 一般来说,有两块功能是每个系统都

Spring入门第二十二课

重用切面表达式 我们有的时候在切面里面有多个函数,大部分函数的切入点都是一样的,所以我们可以声明切入点表达式,来重用. package logan.study.aop.impl; public interface ArithmeticCalculator { int add(int i, int j); int sub(int i, int j); int mul(int i, int j); int div(int i, int j); } package logan.study.aop.im