栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring之初步探索(在更)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring之初步探索(在更)

 1.beans.xml的格式更新



2.beans.xml中bean的创建

创建bean时默认识别无参构造方法,所以我们要附加相应的属性才能让编辑器识别其他构造方法。

创建bean我们主要使用三种方法。(例子为下)


    

        
    
    
    


        
    

    
        
    
3.依赖注入

    依赖注入分为:构造器注入, set注入,拓展注入。

    构造器注入:通过不同的构造器创建不同的类从而产生注入。

    set注入:通过对被创建类中的属性进行赋值从而产生注入。

    拓展方式注入: 就是 p命名和 c命名从而产生注入。(p命名和c命名不能直接使用,需要导入xml约束)

c命名的引入代码为下

xmlns:c="http://www.springframework.org/schema/c"

p命名引入代码为下:

xmlns:p="http://www.springframework.org/schema/p"
    4.bean的自动装配

autowire="byName"

需要保证所有的bean的id唯一,并且这个bean需要和自动注入的属性的set方法的值一致。(通过对应的名字进行自动装配)

autowire="byType"

需要保证所有的bean的class唯一,并且这个bean需要和自动注入的属性的类型的值一致。(对应的对象类型要唯一,不然会出错)
5.使用注解开发

注入适用于简单的配置,复杂的配置还是走配置文件,以便于后期维护。

要使用注解须知:

1.导入约束。

2.配置注解的支持




    

@Autowired:自动装配,可以理解成autowire:byType。
@Scope:配置模式。
@Autowired(required = false)说明这个对象可以为空,否则不能为空。
@Nullable:用于存放方法的参数,表示参数可以为null。
@Qualifier(value = ""):可以理解成autowire:byName,value表示Name。
@Component:组件,放在类上,说明这个类被Spring管理了等价于:,默认创建的类名为该类的名字的小写。
@value用于对类中的属性进行赋值。

对应的例子为下:
@Component
public class User {
//    等价于
    @Value("张三")
    public String name;
}

@Component有一些衍生注解,在我们web开发中,会以MVC三层架构进行分层。

  1. Dao[@Repository]
  2. Service[@Service]
  3. Controller[@Controller]

这四个注解的功能都是一样的,都代表某个类注册到Spring中,装配bean。

如果@AutoWired自动装配环境比较复杂,自动装配无法通过一个注解[@AutoWired]完成的时候,我们可以使用@Qualifier(value = "XXX")去配和@AutoWired的使用,指定一个唯一的bean对象注入!

例子如下:

    @Autowired
    private Cat cat;
    @Autowired
    @Qualifier(value = "dog222")
    private Dog dog;

@Resource也可以实现自动装配,其装配的过程为:先查看对应的name,而后再查看class,如果两个属性都不符合的话就会报错。

(重点)@Resource和@AutoWired的区别:

1.都是用自动装配的,都可以放在属性字段上。

2.@AutoWired通过byType的方式实现,而且必须要求这个对象存在。

3.@Resource默认通过byName的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的话就会报错。

6.使用java配置Spring

使用的类为:

AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext("类");

格式:

//这里这个注解的意思是:说明这个类被Spring接管了,注册到了容器里了
//等价于:
@Configuration//这个也会被Spring接管,因为@Configuration本来就是@Component,@Configuration表示这是一个配置类,其功能和bean.xml相同
public class User {
    private String name;

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + ''' +
                '}';
    }
//注册一个bean,相当于bean标签
//这个方法的名字相当于bean中的id
//这方法的返回值相当于bean中的class
    @Bean
    public User getUser(){
        return new User();//返回要注入到bean容器中的对象
    }
}

所以这个配置类可以做和bean.xml中相同的事。

@ComponentScan :用于扫描类。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/309863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号