IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Bean管理注解 -> 正文阅读

[Java知识库]Bean管理注解

目录

一、用于创建对象注解

二、注入数据的注解


SpringBean管理注解: 为了语义化。

一、用于创建对象注解

@Component:除三层以外的其它层:实体层;
@Controller:控制层/action/servlet;
@Service:业务逻辑层service 的实现类;
@Repository:数据访问层/持久层 dao/mapper。

案例:

1.加入注解@Component

Student.java

package com.zking.entity;

import lombok.Data;
import org.springframework.context.annotation.Bean;
import org.springframework.objenesis.instantiator.perc.PercInstantiator;
import org.springframework.stereotype.Component;

@Data
@Component
public class Student {
    private String name;
    private String sex;
    private Integer sage;

}

2.加入扫描包

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
        <!--
            扫描包:扫描包及子子孙孙表里面添加了
            @Component、
            @Controller、
            @Service、
            @Repository
            注解的java类
        -->
        <context:component-scan base-package="com.zking"/>
</beans>

3.测试

Test.java

package com.zking.test;

import com.sun.xml.internal.fastinfoset.util.DuplicateAttributeVerifier;
import com.zking.entity.Student;
import com.zking.entity.Teacher;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.rmi.CORBA.Stub;

public class Test {
    public static void main(String[] args) {
        // 1.启动spring容器
        ApplicationContext applicationcontext = new ClassPathXmlApplicationContext("spring_03.xml");
        // 2.得到bean对象
        Student student = (Student)applicationcontext.getBean("student");
        System.out.println("student = " + student);
    }
}

控制台打印:

注:可以手动指定注解对象名bean里面的名字;

@Component(value = "s")

注:给注解属性赋值,如果只有一个属性,且属性名是value,则可以省略value不写。

例:

@Component("s")

1.1.@Bean注解
@Bean:加在方法上面,告诉该方法把返回的对象交给spring容器管理。


bean对象名默认是当前方法名;例:createTeacher。

也可以指定bean里面的名字,name="" ;

案例:

Student.java

package com.zking.entity;

import lombok.Data;
import org.springframework.context.annotation.Bean;
import org.springframework.objenesis.instantiator.perc.PercInstantiator;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

@Data
@Component
public class Student {
    private String name;
    private String sex;
    private Integer sage;

    @Bean// 加在方法上面,告诉该方法把返回的对象交给spring容器管理
    public Dog createDog(){
        return new Dog();
    }
}

Dog.java

package com.zking.entity;

import lombok.Data;

@Data
public class Dog {
    private String name;

    public Dog(){
        System.out.println("我是狗类的无参构造方法!");
    }
}

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
        <!--
            扫描包:扫描包及子子孙孙表里面添加了
            @Component、
            @Controller、
            @Service、
            @Repository
            注解的java类
        -->
        <context:component-scan base-package="com.zking"/>
</beans>

测试

package com.zking.test;

import com.sun.xml.internal.fastinfoset.util.DuplicateAttributeVerifier;
import com.zking.entity.Student;
import com.zking.entity.Teacher;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import javax.rmi.CORBA.Stub;

public class Test {
    public static void main(String[] args) {
        // 1.启动spring容器
        ApplicationContext applicationcontext = new ClassPathXmlApplicationContext("spring_03.xml");

        System.out.println(applicationcontext.getBean("createDog"));
    }
}

控制台打印:

二、注入数据的注解

2.1.@Value:给基本数据类型注入数据(八大基本数据类型+String);

给Bean类型注入数据:
2.2.@Autowired:通过类型从IOC容器里面找bean对象(同类型的只能有一个Bean对象);


相当于new了对象。

2.3.@Qualifier:当Spring容器同类型的Bean对象存在多个使用;

@Autowired和@Qualifier结合起来使用:

例:如果IOC容器里面有两个Dog类型的Bean,名字分别为dog1、dog2,此时IOC容器不知道实例化哪个对象,就要通过@Qualifier指定对象名。

@Autowired

@Qualifier("studentDao")

private StudentDog studentDao;

private StudentDog studentDao2;

2.4.@Resource:先通过name注入,找不到再通过类型。

2.4.1.通过name注入;

@Resource(name = "studentDao")

private StudentDao studentDao;

2.4.2.再通过类型注入;

@Reource

private StudentDog studentDao;

@Autowired和@Resource的不同:

1.查找Bean的方式不同;

2.如果使用的是spring框架用:@Autowired;

如果使用的是javax:@Resource。


2.5.用于改变作用的范围@Scope

2.6.用于定义生命周期@PostConstruct(bean被创建的时候执行)&@PreDestroy(bean被销毁的时候执行);


2.7.懒加载注解@Lazy

2.8.注解@ComponentScan

@ComponentScan 相当于扫描包 <context:component-scan base-package="com.zking"/>

单个值:

?多个值:

?案例:

完。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 18:50:24  更:2022-08-19 18:51:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:26:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码