Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
HelloWorld
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
闲人
HelloWorld
Commits
158d3dd8
Commit
158d3dd8
authored
Jul 28, 2019
by
zhaoaiqing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
培训资料
parents
Show whitespace changes
Inline
Side-by-side
Showing
66 changed files
with
1342 additions
and
0 deletions
+1342
-0
.gitignore
.gitignore
+45
-0
pom.xml
Traning/pom.xml
+27
-0
Main.java
Traning/src/main/java/com/cesgroup/boot/Main.java
+33
-0
ComponentScanMain.java
...sgroup/zw/componentscan/annotation/ComponentScanMain.java
+27
-0
Dao.java
...in/java/com/cesgroup/zw/componentscan/annotation/Dao.java
+20
-0
UserController.java
...w/componentscan/annotation/controller/UserController.java
+8
-0
UserDao.java
...com/cesgroup/zw/componentscan/annotation/dao/UserDao.java
+8
-0
User.java
...com/cesgroup/zw/componentscan/annotation/domain/User.java
+29
-0
UserService.java
...roup/zw/componentscan/annotation/service/UserService.java
+8
-0
ComponentScanMain.java
...roup/zw/componentscan/annotation01/ComponentScanMain.java
+32
-0
CustomInterfaceTypeFilter.java
...componentscan/annotation01/CustomInterfaceTypeFilter.java
+18
-0
CustomTypeFilter.java
...group/zw/componentscan/annotation01/CustomTypeFilter.java
+33
-0
Mapper.java
...va/com/cesgroup/zw/componentscan/annotation01/Mapper.java
+14
-0
User.java
...java/com/cesgroup/zw/componentscan/annotation01/User.java
+29
-0
Dao.java
...om/cesgroup/zw/componentscan/annotation01/mapper/Dao.java
+5
-0
UserDaoImpl.java
...oup/zw/componentscan/annotation01/mapper/UserDaoImpl.java
+5
-0
UserMapper.java
...roup/zw/componentscan/annotation01/mapper/UserMapper.java
+8
-0
BeanProxy.java
...com/cesgroup/zw/componentscan/annotation02/BeanProxy.java
+30
-0
ComponentScanMain.java
...roup/zw/componentscan/annotation02/ComponentScanMain.java
+48
-0
CustomTypeFilter.java
...group/zw/componentscan/annotation02/CustomTypeFilter.java
+54
-0
DaoFactoryBean.java
...esgroup/zw/componentscan/annotation02/DaoFactoryBean.java
+28
-0
StaffDao.java
.../cesgroup/zw/componentscan/annotation02/dao/StaffDao.java
+9
-0
UserDao.java
...m/cesgroup/zw/componentscan/annotation02/dao/UserDao.java
+9
-0
ImportConfiguration.java
.../java/com/cesgroup/zw/importbean/ImportConfiguration.java
+18
-0
Main.java
...c/main/java/com/cesgroup/zw/t02/bean/annotation/Main.java
+43
-0
Main1.java
.../main/java/com/cesgroup/zw/t02/bean/annotation/Main1.java
+42
-0
Car.java
...n/java/com/cesgroup/zw/t02/bean/annotation/beans/Car.java
+20
-0
Person.java
...ava/com/cesgroup/zw/t02/bean/annotation/beans/Person.java
+27
-0
Main.java
...va/com/cesgroup/zw/t02/componentscan/annotation/Main.java
+38
-0
Car.java
...om/cesgroup/zw/t02/componentscan/annotation/conf/Car.java
+5
-0
Config.java
...cesgroup/zw/t02/componentscan/annotation/conf/Config.java
+10
-0
User.java
...m/cesgroup/zw/t02/componentscan/annotation/conf/User.java
+11
-0
UserDao.java
...cesgroup/zw/t02/componentscan/annotation/dao/UserDao.java
+8
-0
ConditionalOnBean.java
...02/register/annotation/conditional/ConditionalOnBean.java
+19
-0
Main.java
...cesgroup/zw/t02/register/annotation/conditional/Main.java
+23
-0
OnBeanCondition.java
.../t02/register/annotation/conditional/OnBeanCondition.java
+30
-0
Car.java
...roup/zw/t02/register/annotation/conditional/conf/Car.java
+8
-0
Config.java
...p/zw/t02/register/annotation/conditional/conf/Config.java
+16
-0
Person.java
...p/zw/t02/register/annotation/conditional/conf/Person.java
+5
-0
Main.java
...om/cesgroup/zw/t02/register/annotation/import01/Main.java
+38
-0
Car.java
...esgroup/zw/t02/register/annotation/import01/conf/Car.java
+5
-0
Config.java
...roup/zw/t02/register/annotation/import01/conf/Config.java
+21
-0
Person.java
...roup/zw/t02/register/annotation/import01/conf/Person.java
+14
-0
Main.java
...om/cesgroup/zw/t02/register/annotation/import02/Main.java
+30
-0
Car.java
...esgroup/zw/t02/register/annotation/import02/conf/Car.java
+5
-0
Config.java
...roup/zw/t02/register/annotation/import02/conf/Config.java
+15
-0
Person.java
...roup/zw/t02/register/annotation/import02/conf/Person.java
+5
-0
BeanScan.java
...esgroup/zw/t02/register/annotation/import03/BeanScan.java
+25
-0
Main.java
...om/cesgroup/zw/t02/register/annotation/import03/Main.java
+20
-0
Car.java
...esgroup/zw/t02/register/annotation/import03/conf/Car.java
+5
-0
Config.java
...roup/zw/t02/register/annotation/import03/conf/Config.java
+34
-0
Person.java
...roup/zw/t02/register/annotation/import03/conf/Person.java
+5
-0
Animal.java
...g/src/main/java/com/cesgroup/zw/t03/factories/Animal.java
+5
-0
Cat.java
Traning/src/main/java/com/cesgroup/zw/t03/factories/Cat.java
+11
-0
Dog.java
Traning/src/main/java/com/cesgroup/zw/t03/factories/Dog.java
+11
-0
FactoriesImportMain.java
...va/com/cesgroup/zw/t03/factories/FactoriesImportMain.java
+28
-0
Main.java
...ing/src/main/java/com/cesgroup/zw/t03/factories/Main.java
+17
-0
AnimalRegistrar.java
...a/com/cesgroup/zw/t03/factories/conf/AnimalRegistrar.java
+17
-0
Main.java
Traning/src/main/java/com/cesgroup/zw/t04/Main.java
+36
-0
spring.factories
Traning/src/main/resources/META-INF/spring.factories
+4
-0
application.properties
Traning/src/main/resources/application.properties
+2
-0
pom.xml
logger-spring-boot-starter/pom.xml
+25
-0
LogProperties.java
...java/com/cesgroup/autoconfigure/logger/LogProperties.java
+33
-0
LoggerAutoConfiguration.java
...esgroup/autoconfigure/logger/LoggerAutoConfiguration.java
+19
-0
spring.factories
...boot-starter/src/main/resources/META-INF/spring.factories
+3
-0
pom.xml
pom.xml
+59
-0
No files found.
.gitignore
0 → 100644
View file @
158d3dd8
######################################################################
# Build Tools
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
target/
!.mvn/wrapper/maven-wrapper.jar
######################################################################
# IDE
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
nbproject/private/
build/*
nbbuild/
dist/
nbdist/
.nb-gradle/
######################################################################
# Others
*.log
*.xml.versionsBackup
*.txt
!*/build/*.java
!*/build/*.html
!*/build/*.xml
\ No newline at end of file
Traning/pom.xml
0 → 100644
View file @
158d3dd8
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.cesgroup
</groupId>
<artifactId>
SpringBootTraning
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</parent>
<artifactId>
Traning
</artifactId>
<properties>
<java.version>
1.8
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
com.cesgroup
</groupId>
<artifactId>
logger-spring-boot-starter
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
Traning/src/main/java/com/cesgroup/boot/Main.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
boot
;
import
java.util.Arrays
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.WebApplicationType
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.builder.SpringApplicationBuilder
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.stereotype.Repository
;
import
com.cesgroup.zw.importbean.ImportConfiguration
;
@SpringBootApplication
@Import
(
ImportConfiguration
.
class
)
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
ConfigurableApplicationContext
context
=
new
SpringApplicationBuilder
(
Main
.
class
).
web
(
WebApplicationType
.
NONE
)
.
run
(
args
);
System
.
out
.
println
(
"-----------------------"
);
print
(
context
.
getBeanDefinitionNames
());
}
public
static
void
print
(
String
[]
beanNames
)
{
Arrays
.
asList
(
beanNames
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation/ComponentScanMain.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation
;
import
java.util.Arrays
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.stereotype.Repository
;
@ComponentScan
(
value
=
"com.cesgroup.zw.componentscan.annotation"
)
public
class
ComponentScanMain
{
public
static
void
main
(
String
[]
args
)
{
ApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
ComponentScanMain
.
class
);
System
.
out
.
println
(
"-----------------------"
);
print
(
context
.
getBeanDefinitionNames
());
}
public
static
void
print
(
String
[]
beanNames
)
{
Arrays
.
asList
(
beanNames
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation/Dao.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
import
org.springframework.core.annotation.AliasFor
;
import
org.springframework.stereotype.Repository
;
@Target
({
ElementType
.
TYPE
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
@Repository
public
@interface
Dao
{
@AliasFor
(
annotation
=
Repository
.
class
)
String
value
()
default
""
;
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation/controller/UserController.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation
.
controller
;
import
org.springframework.stereotype.Controller
;
@Controller
public
class
UserController
{
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation/dao/UserDao.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation
.
dao
;
import
com.cesgroup.zw.componentscan.annotation.Dao
;
@Dao
public
class
UserDao
{
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation/domain/User.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation
.
domain
;
import
org.springframework.stereotype.Component
;
@Component
public
class
User
{
private
String
userId
;
private
String
userName
;
public
String
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
public
String
getUserName
()
{
return
userName
;
}
public
void
setUserName
(
String
userName
)
{
this
.
userName
=
userName
;
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation/service/UserService.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation
.
service
;
import
org.springframework.stereotype.Service
;
@Service
public
class
UserService
{
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation01/ComponentScanMain.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation01
;
import
java.util.Arrays
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.ComponentScan.Filter
;
import
org.springframework.context.annotation.FilterType
;
@ComponentScan
(
value
=
"com.cesgroup.zw.componentscan.annotation01"
,
useDefaultFilters
=
false
,
includeFilters
=
{
@Filter
(
type
=
FilterType
.
CUSTOM
,
value
=
CustomTypeFilter
.
class
)
})
public
class
ComponentScanMain
{
public
static
void
main
(
String
[]
args
)
{
ApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
ComponentScanMain
.
class
);
System
.
out
.
println
(
"-----------------------"
);
print
(
context
.
getBeanDefinitionNames
());
}
public
static
void
print
(
String
[]
beanNames
)
{
Arrays
.
asList
(
beanNames
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation01/CustomInterfaceTypeFilter.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation01
;
import
java.io.IOException
;
import
org.springframework.core.type.classreading.MetadataReader
;
import
org.springframework.core.type.classreading.MetadataReaderFactory
;
import
org.springframework.core.type.filter.TypeFilter
;
public
class
CustomInterfaceTypeFilter
implements
TypeFilter
{
@Override
public
boolean
match
(
MetadataReader
metadataReader
,
MetadataReaderFactory
metadataReaderFactory
)
throws
IOException
{
return
false
;
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation01/CustomTypeFilter.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation01
;
import
java.io.IOException
;
import
java.util.Arrays
;
import
org.springframework.context.support.GenericApplicationContext
;
import
org.springframework.core.type.classreading.CachingMetadataReaderFactory
;
import
org.springframework.core.type.classreading.MetadataReader
;
import
org.springframework.core.type.classreading.MetadataReaderFactory
;
import
org.springframework.core.type.filter.TypeFilter
;
import
com.cesgroup.zw.componentscan.annotation01.mapper.Dao
;
public
class
CustomTypeFilter
implements
TypeFilter
{
@Override
public
boolean
match
(
MetadataReader
metadataReader
,
MetadataReaderFactory
metadataReaderFactory
)
throws
IOException
{
System
.
out
.
println
(
"call CustomTypeFilter "
+
metadataReader
.
getClassMetadata
().
getClassName
());
boolean
result
=
Arrays
.
asList
(
metadataReader
.
getClassMetadata
().
getInterfaceNames
()).
contains
(
Dao
.
class
.
getName
());
//System.out.println(result);
return
result
;
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation01/Mapper.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation01
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
@Target
({
ElementType
.
TYPE
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
public
@interface
Mapper
{
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation01/User.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation01
;
import
org.springframework.stereotype.Component
;
@Component
public
class
User
{
private
String
userId
;
private
String
userName
;
public
String
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
public
String
getUserName
()
{
return
userName
;
}
public
void
setUserName
(
String
userName
)
{
this
.
userName
=
userName
;
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation01/mapper/Dao.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation01
.
mapper
;
public
interface
Dao
{
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation01/mapper/UserDaoImpl.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation01
.
mapper
;
public
class
UserDaoImpl
implements
Dao
{
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation01/mapper/UserMapper.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation01
.
mapper
;
import
com.cesgroup.zw.componentscan.annotation01.Mapper
;
@Mapper
public
class
UserMapper
{
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation02/BeanProxy.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation02
;
import
java.lang.reflect.InvocationHandler
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Proxy
;
@SuppressWarnings
(
"rawtypes"
)
public
class
BeanProxy
implements
InvocationHandler
{
private
Class
target
;
public
Object
newInstance
(
Class
target
)
{
this
.
target
=
target
;
return
Proxy
.
newProxyInstance
(
target
.
getClassLoader
(),
new
Class
[]
{
target
},
this
);
}
@Override
public
Object
invoke
(
Object
proxy
,
Method
method
,
Object
[]
args
)
throws
Throwable
{
System
.
out
.
println
(
"call BeanProxy ..........."
+
target
.
getName
());
System
.
out
.
println
(
"根据请求对象自己扩展代码"
);
return
null
;
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation02/ComponentScanMain.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation02
;
import
java.util.Arrays
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.ComponentScan.Filter
;
import
org.springframework.context.annotation.FilterType
;
import
com.cesgroup.zw.componentscan.annotation02.dao.StaffDao
;
import
com.cesgroup.zw.componentscan.annotation02.dao.UserDao
;
@ComponentScan
(
value
=
"com.cesgroup.zw.componentscan.annotation02.dao"
,
useDefaultFilters
=
false
,
includeFilters
=
{
@Filter
(
type
=
FilterType
.
CUSTOM
,
value
=
CustomTypeFilter
.
class
)
})
public
class
ComponentScanMain
{
public
static
void
main
(
String
[]
args
)
{
ApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
ComponentScanMain
.
class
);
System
.
out
.
println
(
"-----------------------"
);
print
(
context
.
getBeanDefinitionNames
());
StaffDao
staffDao
=
context
.
getBean
(
StaffDao
.
class
);
System
.
out
.
println
(
staffDao
.
findAll
());
UserDao
userDao
=
context
.
getBean
(
UserDao
.
class
);
System
.
out
.
println
(
userDao
.
findAll
());
}
public
static
void
print
(
String
[]
beanNames
)
{
Arrays
.
asList
(
beanNames
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation02/CustomTypeFilter.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation02
;
import
java.io.IOException
;
import
org.springframework.beans.factory.support.RootBeanDefinition
;
import
org.springframework.context.support.GenericApplicationContext
;
import
org.springframework.core.type.classreading.CachingMetadataReaderFactory
;
import
org.springframework.core.type.classreading.MetadataReader
;
import
org.springframework.core.type.classreading.MetadataReaderFactory
;
import
org.springframework.core.type.filter.TypeFilter
;
public
class
CustomTypeFilter
implements
TypeFilter
{
@Override
public
boolean
match
(
MetadataReader
metadataReader
,
MetadataReaderFactory
metadataReaderFactory
)
throws
IOException
{
boolean
result
=
metadataReader
.
getClassMetadata
().
isInterface
();
if
(
result
)
{
CachingMetadataReaderFactory
cachingMetadataReaderFactory
=
(
CachingMetadataReaderFactory
)
metadataReaderFactory
;
GenericApplicationContext
context
=
(
GenericApplicationContext
)
cachingMetadataReaderFactory
.
getResourceLoader
();
RootBeanDefinition
beanDefinition
=
new
RootBeanDefinition
();
try
{
Class
clz
=
Class
.
forName
(
metadataReader
.
getClassMetadata
().
getClassName
());
beanDefinition
.
getConstructorArgumentValues
().
addGenericArgumentValue
(
clz
);
beanDefinition
.
setBeanClass
(
DaoFactoryBean
.
class
);
context
.
registerBeanDefinition
(
clz
.
getName
(),
beanDefinition
);
}
catch
(
ClassNotFoundException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
}
return
result
;
// 如果匹配成功就不扫描
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation02/DaoFactoryBean.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation02
;
import
org.springframework.beans.factory.FactoryBean
;
@SuppressWarnings
(
"rawtypes"
)
public
class
DaoFactoryBean
implements
FactoryBean
{
private
Class
clazz
;
private
Object
target
;
public
DaoFactoryBean
(
Class
clz
)
{
this
.
clazz
=
clz
;
BeanProxy
beanProxy
=
new
BeanProxy
();
target
=
beanProxy
.
newInstance
(
clazz
);
}
@Override
public
Object
getObject
()
throws
Exception
{
return
target
;
}
@Override
public
Class
getObjectType
()
{
return
clazz
;
}
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation02/dao/StaffDao.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation02
.
dao
;
import
java.util.List
;
public
interface
StaffDao
{
List
<
Object
>
findAll
();
}
Traning/src/main/java/com/cesgroup/zw/componentscan/annotation02/dao/UserDao.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
componentscan
.
annotation02
.
dao
;
import
java.util.List
;
public
interface
UserDao
{
List
<
Object
>
findAll
();
}
Traning/src/main/java/com/cesgroup/zw/importbean/ImportConfiguration.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
importbean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
ImportConfiguration
{
@Bean
public
Stu
stu
()
{
return
new
Stu
();
}
public
static
class
Stu
{
}
}
Traning/src/main/java/com/cesgroup/zw/t02/bean/annotation/Main.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
bean
.
annotation
;
import
java.util.Arrays
;
import
org.springframework.beans.factory.config.RuntimeBeanReference
;
import
org.springframework.beans.factory.support.DefaultListableBeanFactory
;
import
org.springframework.beans.factory.support.RootBeanDefinition
;
import
com.cesgroup.zw.t02.bean.annotation.beans.Car
;
import
com.cesgroup.zw.t02.bean.annotation.beans.Person
;
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
DefaultListableBeanFactory
context
=
new
DefaultListableBeanFactory
();
RootBeanDefinition
definitions
=
new
RootBeanDefinition
(
Car
.
class
);
definitions
.
getConstructorArgumentValues
().
addIndexedArgumentValue
(
0
,
"BM"
);
context
.
registerBeanDefinition
(
"car"
,
definitions
);
definitions
=
new
RootBeanDefinition
(
Person
.
class
);
definitions
.
getPropertyValues
().
add
(
"car"
,
new
RuntimeBeanReference
(
"car"
));
context
.
registerBeanDefinition
(
"person"
,
definitions
);
print
(
context
.
getBeanDefinitionNames
());
Car
car
=
context
.
getBean
(
Car
.
class
);
System
.
out
.
println
(
car
);
System
.
out
.
println
(
context
.
getBean
(
Person
.
class
).
getCarName
());
}
public
static
void
print
(
String
[]
beanDefinitions
)
{
Arrays
.
asList
(
beanDefinitions
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/t02/bean/annotation/Main1.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
bean
.
annotation
;
import
java.util.Arrays
;
import
org.springframework.beans.factory.support.RootBeanDefinition
;
import
org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry
;
import
org.springframework.context.annotation.AnnotatedBeanDefinitionReader
;
import
org.springframework.context.annotation.ClassPathBeanDefinitionScanner
;
import
com.cesgroup.zw.t02.componentscan.annotation.conf.Config
;
import
com.cesgroup.zw.t02.componentscan.annotation.conf.User
;
public
class
Main1
{
public
static
void
main
(
String
[]
args
)
{
SimpleBeanDefinitionRegistry
registry
=
new
SimpleBeanDefinitionRegistry
();
registry
.
registerBeanDefinition
(
"user"
,
new
RootBeanDefinition
(
User
.
class
));
print
(
registry
.
getBeanDefinitionNames
());
AnnotatedBeanDefinitionReader
reader
=
new
AnnotatedBeanDefinitionReader
(
registry
);
reader
.
register
(
Config
.
class
);
print
(
registry
.
getBeanDefinitionNames
());
ClassPathBeanDefinitionScanner
scanner
=
new
ClassPathBeanDefinitionScanner
(
registry
);
scanner
.
scan
(
"com.cesgroup.zw.t02.componentscan"
);
print
(
registry
.
getBeanDefinitionNames
());
}
public
static
void
print
(
String
[]
beanDefinitions
)
{
Arrays
.
asList
(
beanDefinitions
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/t02/bean/annotation/beans/Car.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
bean
.
annotation
.
beans
;
public
class
Car
{
public
Car
(
String
name
)
{
this
.
name
=
name
;
}
private
String
name
;
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
Traning/src/main/java/com/cesgroup/zw/t02/bean/annotation/beans/Person.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
bean
.
annotation
.
beans
;
import
org.springframework.beans.factory.annotation.Autowired
;
public
class
Person
{
private
Car
car
;
public
Person
()
{
}
public
String
getCarName
()
{
return
car
.
getName
();
}
public
Car
getCar
()
{
return
car
;
}
public
void
setCar
(
Car
car
)
{
this
.
car
=
car
;
}
}
Traning/src/main/java/com/cesgroup/zw/t02/componentscan/annotation/Main.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
componentscan
.
annotation
;
import
java.util.Set
;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
;
import
org.springframework.core.type.filter.AnnotationTypeFilter
;
import
org.springframework.stereotype.Component
;
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
ClassPathScanningCandidateComponentProvider
provider
=
new
ClassPathScanningCandidateComponentProvider
(
true
);
//provider.addExcludeFilter(new AnnotationTypeFilter(Component.class));
provider
.
addIncludeFilter
(
new
AnnotationTypeFilter
(
Component
.
class
));
/*provider.addIncludeFilter((metadataReader,metadataReaderFactory) ->{
System.out.println(metadataReader.getClassMetadata().getClassName());
return true;
});*/
Set
<
BeanDefinition
>
beanDefinitions
=
provider
.
findCandidateComponents
(
"com.cesgroup.zw.t02.componentscan.annotation"
);
print
(
beanDefinitions
);
}
public
static
void
print
(
Set
<
BeanDefinition
>
beanDefinitions
)
{
beanDefinitions
.
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/t02/componentscan/annotation/conf/Car.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
componentscan
.
annotation
.
conf
;
public
class
Car
{
}
Traning/src/main/java/com/cesgroup/zw/t02/componentscan/annotation/conf/Config.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
componentscan
.
annotation
.
conf
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
Config
{
}
Traning/src/main/java/com/cesgroup/zw/t02/componentscan/annotation/conf/User.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
componentscan
.
annotation
.
conf
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
User
{
}
Traning/src/main/java/com/cesgroup/zw/t02/componentscan/annotation/dao/UserDao.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
componentscan
.
annotation
.
dao
;
import
org.springframework.stereotype.Repository
;
@Repository
public
class
UserDao
{
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/conditional/ConditionalOnBean.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
conditional
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
import
org.springframework.context.annotation.Conditional
;
@Target
(
ElementType
.
METHOD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Conditional
(
OnBeanCondition
.
class
)
public
@interface
ConditionalOnBean
{
Class
<?>[]
value
()
;
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/conditional/Main.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
conditional
;
import
java.util.Arrays
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.ComponentScan
;
@ComponentScan
(
"com.cesgroup.zw.t02.register.annotation.conditional"
)
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
Main
.
class
);
print
(
context
.
getBeanDefinitionNames
());
}
public
static
void
print
(
String
[]
beanDefinitions
)
{
Arrays
.
asList
(
beanDefinitions
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/conditional/OnBeanCondition.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
conditional
;
import
java.util.Map
;
import
org.springframework.context.annotation.Condition
;
import
org.springframework.context.annotation.ConditionContext
;
import
org.springframework.core.annotation.AnnotationAttributes
;
import
org.springframework.core.type.AnnotatedTypeMetadata
;
import
com.cesgroup.zw.t02.register.annotation.import03.BeanScan
;
public
class
OnBeanCondition
implements
Condition
{
@Override
public
boolean
matches
(
ConditionContext
context
,
AnnotatedTypeMetadata
metadata
)
{
Map
<
String
,
Object
>
map
=
metadata
.
getAnnotationAttributes
(
ConditionalOnBean
.
class
.
getName
());
AnnotationAttributes
annotationAttributes
=
AnnotationAttributes
.
fromMap
(
map
);
Class
<?>[]
classes
=
annotationAttributes
.
getClassArray
(
"value"
);
boolean
isContain
=
false
;
for
(
Class
<?>
clz:
classes
)
{
isContain
=
context
.
getBeanFactory
().
containsBean
(
clz
.
getSimpleName
().
toLowerCase
());
if
(!
isContain
)
{
break
;
}
}
return
isContain
;
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/conditional/conf/Car.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
conditional
.
conf
;
import
org.springframework.stereotype.Component
;
@Component
public
class
Car
{
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/conditional/conf/Config.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
conditional
.
conf
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
com.cesgroup.zw.t02.register.annotation.conditional.ConditionalOnBean
;
@Configuration
public
class
Config
{
@Bean
@ConditionalOnBean
(
Car
.
class
)
public
Person
person
()
{
return
new
Person
();
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/conditional/conf/Person.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
conditional
.
conf
;
public
class
Person
{
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import01/Main.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import01
;
import
java.util.Arrays
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.Import
;
import
com.cesgroup.zw.t02.register.annotation.import01.conf.Car
;
import
com.cesgroup.zw.t02.register.annotation.import01.conf.Config
;
import
com.cesgroup.zw.t02.register.annotation.import01.conf.Person
;
@Import
(
Config
.
class
)
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
Main
.
class
);
Car
car
=
context
.
getBean
(
Car
.
class
);
Car
car1
=
context
.
getBean
(
Person
.
class
).
getCar
();
System
.
out
.
println
(
car
==
car1
);
print
(
context
.
getBeanDefinitionNames
());
}
public
static
void
print
(
String
[]
beanDefinitions
)
{
Arrays
.
asList
(
beanDefinitions
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import01/conf/Car.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import01
.
conf
;
public
class
Car
{
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import01/conf/Config.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import01
.
conf
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
Config
{
@Bean
public
Car
car
()
{
System
.
out
.
println
(
"------------------------car"
);
return
new
Car
();
}
@Bean
public
Person
person1
()
{
return
new
Person
(
car
());
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import01/conf/Person.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import01
.
conf
;
public
class
Person
{
private
Car
car
;
public
Person
(
Car
car
)
{
this
.
car
=
car
;
}
public
Car
getCar
()
{
return
car
;
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import02/Main.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import02
;
import
java.util.Arrays
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.Import
;
import
com.cesgroup.zw.t02.register.annotation.import02.conf.Config
;
@Import
(
Config
.
class
)
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
// TODO Auto-generated method stub
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
Main
.
class
);
print
(
context
.
getBeanDefinitionNames
());
}
public
static
void
print
(
String
[]
beanDefinitions
)
{
Arrays
.
asList
(
beanDefinitions
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import02/conf/Car.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import02
.
conf
;
public
class
Car
{
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import02/conf/Config.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import02
.
conf
;
import
org.springframework.context.annotation.ImportSelector
;
import
org.springframework.core.type.AnnotationMetadata
;
public
class
Config
implements
ImportSelector
{
@Override
public
String
[]
selectImports
(
AnnotationMetadata
importingClassMetadata
)
{
// TODO Auto-generated method stub
return
new
String
[]
{
Car
.
class
.
getName
(),
Person
.
class
.
getName
()};
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import02/conf/Person.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import02
.
conf
;
public
class
Person
{
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import03/BeanScan.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import03
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.core.annotation.AliasFor
;
import
com.cesgroup.zw.t02.register.annotation.import03.conf.Config
;
@Target
(
ElementType
.
TYPE
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Import
(
Config
.
class
)
public
@interface
BeanScan
{
@AliasFor
(
"value"
)
String
[]
basePackage
()
default
{};
@AliasFor
(
"basePackage"
)
String
[]
value
()
default
{};
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import03/Main.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import03
;
import
java.util.Arrays
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
@BeanScan
(
"com.cesgroup.zw.t02.register.annotation.import03"
)
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
Main
.
class
);
print
(
context
.
getBeanDefinitionNames
());
}
public
static
void
print
(
String
[]
beanDefinitions
)
{
Arrays
.
asList
(
beanDefinitions
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import03/conf/Car.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import03
.
conf
;
public
class
Car
{
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import03/conf/Config.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import03
.
conf
;
import
java.util.Map
;
import
org.springframework.beans.factory.support.BeanDefinitionRegistry
;
import
org.springframework.context.annotation.ClassPathBeanDefinitionScanner
;
import
org.springframework.context.annotation.ImportBeanDefinitionRegistrar
;
import
org.springframework.core.annotation.AnnotationAttributes
;
import
org.springframework.core.type.AnnotationMetadata
;
import
com.cesgroup.zw.t02.register.annotation.import03.BeanScan
;
public
class
Config
implements
ImportBeanDefinitionRegistrar
{
@Override
public
void
registerBeanDefinitions
(
AnnotationMetadata
importingClassMetadata
,
BeanDefinitionRegistry
registry
)
{
Map
<
String
,
Object
>
map
=
importingClassMetadata
.
getAnnotationAttributes
(
BeanScan
.
class
.
getName
(),
true
);
AnnotationAttributes
annotationAttributes
=
AnnotationAttributes
.
fromMap
(
map
);
String
[]
basePackages
=
annotationAttributes
.
getStringArray
(
"basePackage"
);
ClassPathBeanDefinitionScanner
scanner
=
new
ClassPathBeanDefinitionScanner
(
registry
,
false
);
scanner
.
addIncludeFilter
((
metadataReader
,
metadataReaderFactory
)->{
return
true
;
});
scanner
.
scan
(
basePackages
);
}
}
Traning/src/main/java/com/cesgroup/zw/t02/register/annotation/import03/conf/Person.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t02
.
register
.
annotation
.
import03
.
conf
;
public
class
Person
{
}
Traning/src/main/java/com/cesgroup/zw/t03/factories/Animal.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t03
.
factories
;
public
interface
Animal
{
void
eat
();
}
Traning/src/main/java/com/cesgroup/zw/t03/factories/Cat.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t03
.
factories
;
public
class
Cat
implements
Animal
{
@Override
public
void
eat
()
{
System
.
out
.
println
(
"Сè"
);
}
}
Traning/src/main/java/com/cesgroup/zw/t03/factories/Dog.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t03
.
factories
;
public
class
Dog
implements
Animal
{
@Override
public
void
eat
()
{
System
.
out
.
println
(
"СԹͷ"
);
}
}
Traning/src/main/java/com/cesgroup/zw/t03/factories/FactoriesImportMain.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t03
.
factories
;
import
java.util.Arrays
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.Import
;
import
com.cesgroup.zw.t03.factories.conf.AnimalRegistrar
;
@Import
(
AnimalRegistrar
.
class
)
public
class
FactoriesImportMain
{
public
static
void
main
(
String
[]
args
)
{
ApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
FactoriesImportMain
.
class
);
System
.
out
.
println
(
"-----------------------"
);
print
(
context
.
getBeanDefinitionNames
());
}
public
static
void
print
(
String
[]
beanNames
)
{
Arrays
.
asList
(
beanNames
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/t03/factories/Main.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t03
.
factories
;
import
java.util.List
;
import
org.springframework.core.io.support.SpringFactoriesLoader
;
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
beanNames
=
SpringFactoriesLoader
.
loadFactoryNames
(
Animal
.
class
,
Main
.
class
.
getClassLoader
());
beanNames
.
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/java/com/cesgroup/zw/t03/factories/conf/AnimalRegistrar.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t03
.
factories
.
conf
;
import
org.springframework.context.annotation.ImportSelector
;
import
org.springframework.core.io.support.SpringFactoriesLoader
;
import
org.springframework.core.type.AnnotationMetadata
;
import
com.cesgroup.zw.t03.factories.Animal
;
public
class
AnimalRegistrar
implements
ImportSelector
{
public
String
[]
selectImports
(
AnnotationMetadata
importingClassMetadata
)
{
return
SpringFactoriesLoader
.
loadFactoryNames
(
Animal
.
class
,
AnimalRegistrar
.
class
.
getClassLoader
()).
toArray
(
new
String
[]
{});
}
}
Traning/src/main/java/com/cesgroup/zw/t04/Main.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
zw
.
t04
;
import
java.util.Arrays
;
import
org.springframework.boot.WebApplicationType
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.builder.SpringApplicationBuilder
;
import
org.springframework.context.ApplicationContext
;
import
com.cesgroup.autoconfigure.logger.LogProperties
;
@SpringBootApplication
public
class
Main
{
public
static
void
main
(
String
[]
args
)
{
ApplicationContext
context
=
new
SpringApplicationBuilder
(
Main
.
class
).
web
(
WebApplicationType
.
NONE
)
.
run
(
args
);
System
.
out
.
println
(
"-----------------------"
);
print
(
context
.
getBeanDefinitionNames
());
// ͨılogger.enable
LogProperties
logProperties
=
context
.
getBean
(
LogProperties
.
class
);
}
public
static
void
print
(
String
[]
beanNames
)
{
Arrays
.
asList
(
beanNames
).
forEach
(
System
.
out
::
println
);
}
}
Traning/src/main/resources/META-INF/spring.factories
0 → 100644
View file @
158d3dd8
com.cesgroup.zw.t03.factories.Animal=\
com.cesgroup.zw.t03.factories.Dog,\
com.cesgroup.zw.t03.factories.Cat
\ No newline at end of file
Traning/src/main/resources/application.properties
0 → 100644
View file @
158d3dd8
logger.enable
=
true
\ No newline at end of file
logger-spring-boot-starter/pom.xml
0 → 100644
View file @
158d3dd8
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.cesgroup
</groupId>
<artifactId>
SpringBootTraning
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
</parent>
<artifactId>
logger-spring-boot-starter
</artifactId>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-autoconfigure
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
<optional>
true
</optional>
</dependency>
</dependencies>
</project>
\ No newline at end of file
logger-spring-boot-starter/src/main/java/com/cesgroup/autoconfigure/logger/LogProperties.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
autoconfigure
.
logger
;
import
java.util.HashMap
;
import
java.util.Map
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
@ConfigurationProperties
(
prefix
=
"logger"
)
public
class
LogProperties
{
private
String
enable
;
private
Map
<
String
,
String
>
pa
=
new
HashMap
<
String
,
String
>();
public
String
getEnable
()
{
return
enable
;
}
public
void
setEnable
(
String
enable
)
{
this
.
enable
=
enable
;
}
public
Map
<
String
,
String
>
getPa
()
{
return
pa
;
}
public
void
setPa
(
Map
<
String
,
String
>
pa
)
{
this
.
pa
=
pa
;
}
}
logger-spring-boot-starter/src/main/java/com/cesgroup/autoconfigure/logger/LoggerAutoConfiguration.java
0 → 100644
View file @
158d3dd8
package
com
.
cesgroup
.
autoconfigure
.
logger
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
@ConditionalOnProperty
(
prefix
=
"logger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
LogProperties
.
class
)
public
class
LoggerAutoConfiguration
{
private
final
LogProperties
logProperties
;
public
LoggerAutoConfiguration
(
LogProperties
logProperties
)
{
this
.
logProperties
=
logProperties
;
}
}
logger-spring-boot-starter/src/main/resources/META-INF/spring.factories
0 → 100644
View file @
158d3dd8
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.cesgroup.autoconfigure.logger.LoggerAutoConfiguration
\ No newline at end of file
pom.xml
0 → 100644
View file @
158d3dd8
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.cesgroup
</groupId>
<artifactId>
SpringBootTraning
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<packaging>
pom
</packaging>
<properties>
<java.version>
1.8
</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-dependencies
</artifactId>
<version>
2.1.6.RELEASE
</version>
<type>
pom
</type>
<scope>
import
</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
3.2
</version>
<configuration>
<source>
1.8
</source>
<target>
1.8
</target>
</configuration>
</plugin>
</plugins>
</build>
<modules>
<module>
Traning
</module>
<module>
logger-spring-boot-starter
</module>
</modules>
</project>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment