이전에 Bean 객체를 저장했을 때 이를 주입하려면 구성 파일에 Bean 한 줄을 추가해야 했습니다.
이 주입 방법은 오류가 있는 경우 좋지 않습니다. 구성 파일, 프로그램은 오류 메시지가 표시되지 않습니다. 이는 초보자에게 매우 불친절합니다.
시작 클래스 및 기본 메서드 만들기
创建启动类和main方法
引入依赖
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.3.RELEASE</version> </dependency> </dependencies>
创建配置文件
我们约定好创建的bean对象放在com.bean包下:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.3.RELEASE</version> </dependency> </dependencies>
使用Spring的核心就是使用注解,我们学习的注解有5个
@Controller 【控制器】@Service 【服务】@Repository 【仓库】@Configuration 【配置/布局】@Component 【组件】 2.1 controller
我们之前能够通过传入id参数来获取对象,但那是加了一行bean手动加入的id,但现在我们使用了注解,难道就只能使用类类型来获取吗?
我们使用注解注入bean对象时,id其实默认是类名的小驼峰形式:
原因先不解释,后面会说。
容易犯的错
:
我们之前在配置文件中加入了bean对象查找的根目录,意味着会从这个目录开始向下搜索,但不会向上:
下级目录
上级目录
종속성 소개
rrreee
구성 파일 생성
com.bean에서 bean 객체를 생성하는 데 동의했습니다. 패키지:
rrreee
2. 컨테이너에 Bean을 저장하기 위해 Annotation을 추가합니다Spring 사용의 핵심은 Annotation을 사용하는 것입니다. 우리가 배운 Annotation은 5가지입니다@Controller [Controller] @Service [Service] @Repository [Warehouse] @Configuration [Configuration /Layout]@Component [Component] 2.1 컨트롤러
이전에는 id 매개변수를 전달하여 객체를 얻을 수 있었지만 그것은 ID를 수동으로 추가하기 위해 빈 줄을 추가하는 것이었지만 이제 주석을 사용하므로 클래스 유형만 사용하여 객체를 얻을 수 있습니까? 주석을 사용하여 Bean 객체를 삽입할 때 ID는 실제로 기본적으로 클래스 이름의 카멜 케이스 형식입니다. 이유는 먼저 설명하지 않고 나중에 논의하겠습니다.쉬운 실수
:
이전에 구성 파일에 Bean 객체 검색을 위한 루트 디렉터리를 추가했는데, 이는 검색이 이 디렉터리에서 아래쪽으로 시작되지만 위쪽으로는 시작되지 않음을 의미합니다.
다운로드 디렉토리
상위 디렉토리
2.2 Service
2.3 Repository
🎜🎜🎜🎜🎜🎜 🎜2.4 구성🎜 🎜🎜🎜🎜🎜🎜🎜2.5 컴포넌트🎜🎜🎜 🎜🎜🎜🎜🎜2.6 주석의 주요 카테고리가 5가지인 이유🎜🎜🎜🎜🎜회사에서 각자 담당하는 영역이 다르기 때문에 사용하는 클래스 주석도 다르지만, 5가지 주요 주석 카테고리의 핵심은 같은 . 🎜🎜🎜🎜🎜🎜🎜🎜두 개의 클래스 주석을 통해 다른 네 개의 주석이 모두 구성 요소 주석의 메서드를 도입한다는 것을 명확하게 알 수 있습니다. 이는 구성 요소가 다른 네 개의 클래스 주석의 아버지라는 것을 의미합니다. 그렇다면 컴포넌트는 무엇을 하는가? 주석을 달 때 다른 네 가지 범주에 던지는 것은 쉽지 않습니다~🎜🎜2.7 기본 ID가 작은 혹인 이유🎜🎜글로벌 검색을 사용합니다:🎜🎜Find AnnotationBeanNameGenerator:
Test:
Bean 주석은 메서드 주석입니다. 메서드에 사용하면 반환됩니다. 객체는 Spring에서도 주입되지만 다섯 가지 주요 유형의 주석과 함께 사용해야 합니다(어느 누구라도 가능).
id는 메서드 이름입니다.
Note
: name 속성을 사용하여 이름을 바꿀 때 원본 메서드 이름 효과를 잃게 됩니다. 즉, 수정된 이름만 ID로 사용할 수 있습니다. 注意
:当使用name属性重命名后,原本的方法名将失去作用,也就是说只能使用那么修改后的名字作为id了。
获取bean对象也叫对象注入,其有以下3种方法:
属性注入
构造方法注入
Setter注入
虽然现在看起来没什么问题,但是当我们对同一类型的对象进行了多次注入:
此时就需要精准定位所选择的对象了,需要类型+名字
:
Resource有个name 属性,可以指定注入bean的名称
但Autowired也有个搭配注解,@Qualifier,一样可以指定选择的bean对象,所以二者之间嘛,我觉得打成平手
ps
:Autowired注解一开始是要进行查询所有类型为所需注入的对象的类型,但Autowired一次只能注入一个对象,因此当统一类型的对象注入多次后会报错。而Qualifier注解本质上是对其所查询的结果进行筛选。
还是使用Autowired注解:
ps
빈 객체 가져오기를 객체 주입이라고도 합니다. 세 가지 방법이 있습니다:
유형+이름
이 필요합니다.🎜🎜🎜🎜1.2Resource🎜🎜🎜🎜1.3 둘 사이의 차이점🎜🎜Resource에는 주입된 Bean의 이름을 지정할 수 있는 name 속성이 있습니다🎜🎜🎜🎜그러나 Autowired에는 선택한 Bean 객체를 지정할 수도 있는 @Qualifier라는 주석도 있으므로 둘 사이에는 동점이라고 생각합니다🎜🎜🎜🎜ps
: Autowired 주석은 처음에 주입해야 하는 객체 유형에 대해 모든 유형을 쿼리하지만 Autowired는 한 번에 하나의 객체만 주입할 수 있으므로 통합 유형이 개체가 여러 번 주입된 후에 보고됩니다. 한정자 주석은 본질적으로 쿼리 결과를 필터링합니다. 🎜ps
: 생성자가 하나만 있는 경우 Autowired는 생략 가능하지만🎜🎜2개 이상인 경우 생략할 수 없습니다🎜🎜🎜🎜
또는 Autowired를 통한
Resource
Setter 주입도 지원됩니다.
속성 주입, 생성자 주입, 설정자 주입의 차이점은 무엇인가요?
위 내용은 Java Spring의 읽기 및 쓰기 작업 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!