增加自动装配核心注解Import相关代码
This commit is contained in:
parent
0511ecebd8
commit
cb251c57e7
|
|
@ -0,0 +1,33 @@
|
|||
HELP.md
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.shockkid</groupId>
|
||||
<artifactId>spring</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>shockkid-spring</name>
|
||||
<description>shockkid-spring</description>
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<spring-boot.version>2.6.13</spring-boot.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-dependencies</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>${spring-boot.version}</version>
|
||||
<configuration>
|
||||
<mainClass>com.shockkid.spring.ShockkidSpringApplication</mainClass>
|
||||
<skip>true</skip>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>repackage</id>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.shockkid.spring;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
|
||||
@SpringBootApplication
|
||||
public class ShockkidSpringApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
ApplicationContext ac = SpringApplication.run(ShockkidSpringApplication.class, args);
|
||||
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
|
||||
for (String beanName : beanDefinitionNames) {
|
||||
System.out.println(beanName);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package com.shockkid.spring.ioc;
|
||||
|
||||
/**
|
||||
* @auther lisang
|
||||
* @date 2024/6/24 22:39
|
||||
**/
|
||||
public class CacheService {
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.shockkid.spring.ioc;
|
||||
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* @auther lisang
|
||||
* @date 2024/6/24 21:52
|
||||
**/
|
||||
@Target(ElementType.TYPE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@Inherited
|
||||
//@Import(LsaDefineImportSelector.class)
|
||||
@Import(LsaImportBeanDefineRegister.class)
|
||||
public @interface EnableLsaDefine {
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package com.shockkid.spring.ioc;
|
||||
|
||||
/**
|
||||
* @auther lisang
|
||||
* @date 2024/6/24 22:39
|
||||
**/
|
||||
public class LoggerService {
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.shockkid.spring.ioc;
|
||||
|
||||
import org.springframework.context.annotation.ImportSelector;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
|
||||
/**
|
||||
* @auther lisang
|
||||
* @date 2024/6/24 21:50
|
||||
**/
|
||||
public class LsaDefineImportSelector implements ImportSelector {
|
||||
/**
|
||||
*
|
||||
* @param importingClassMetadata
|
||||
* @return
|
||||
* IoC要管理的Bean的路径数组
|
||||
*/
|
||||
@Override
|
||||
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
|
||||
// 添加对应的业务逻辑
|
||||
return new String[]{LoggerService.class.getName(),CacheService.class.getName()};
|
||||
//return new String[0];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.shockkid.spring.ioc;
|
||||
|
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
|
||||
/**
|
||||
* @auther lisang
|
||||
* @date 2024/6/24 22:41
|
||||
**/
|
||||
public class LsaImportBeanDefineRegister implements ImportBeanDefinitionRegistrar {
|
||||
@Override
|
||||
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
|
||||
// 先将要管理的Bean封装为一个RootBeanDefinition
|
||||
RootBeanDefinition cache = new RootBeanDefinition(CacheService.class);
|
||||
registry.registerBeanDefinition("myCache", cache);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package com.shockkid.spring.ioc;
|
||||
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* @auther lisang
|
||||
* @date 2024/6/24 21:54
|
||||
**/
|
||||
@EnableLsaDefine
|
||||
@Configuration
|
||||
public class LsaRun {
|
||||
public static void main(String[] args) {
|
||||
ApplicationContext ac = new AnnotationConfigApplicationContext(LsaRun.class);
|
||||
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
|
||||
for (String beanName : beanDefinitionNames) {
|
||||
System.out.println(beanName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package com.shockkid.spring;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class ShockkidSpringApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue