Notas de estudo @ 玩转 Spring 全家 斗
O conteúdo do curso vem da época geek jogando Spring Family Bucket, invadido e excluído , o link é o seguinte
https://time.geekbang.org/course/intro/100023501
Sétimo dia 1/2
Preparação antes de usar MongoDB
NoSQL
Quatro blocos: KV tipo Redis e Memcache,
tipo de documento MongoDB e Couchbase,
armazenamento de coluna HBase e Cassandra,
banco de dados gráfico Neo4j
Banco de dados MongoDB
Suporte por meio do Spring Data MongoDB
Como JDBCTemplate, Spring Data fornece modelo MongoDB
como repositório JPA, Spring Data fornece repositório MongoDB
anotação
@Document é semelhante a @Entity
@Id
MongoDB executa autodividimento de acordo com a Id para lidar com a complexidade de vários fragmentação de dados
Inicialize a biblioteca e as permissões do MongoDB
O nome de usuário e a senha foram configurados na última nota, o root
primeiro inicia o contêiner
docker start mongo
Em seguida, inicie o bash, conecte-se ao banco de dados
docker exec -it mongo bash
mongo -u root -p root
Crie a biblioteca springbucks (use realmente esta biblioteca, mas o sistema irá criá-la automaticamente)
use springbucks
Crie usuários e permissões com base na entrada de linha
db.createUser(
{
user: "springbucks",
pwd: "springbucks",
roles: [
{ role: "readWrite", db: "springbucks" }
]
}
Acesse MongoDB na primavera
Execute o programa, você pode ver as informações de configuração e saída.
Conecte-se ao banco de dados através do cmd. Você pode ver as informações inseridas armazenadas no banco de dados de documentos.
Use MongoTemplate
A anotação de @Id no modelo MongoDB é springframework.data.annotation.Id em vez de Id no JPA
Configure spring.data.mongodb.uri = in application.properties para especificar o banco de dados
Código falso
@SpringBootApplication
@Slf4j
public class MongoDemoApplication implements ApplicationRunner {
@Autowired
private MongoTemplate mongoTemplate;
public static void main(String[] args) {
SpringApplication.run(MongoDemoApplication.class, args);
}
@Bean
public MongoCustomConversions mongoCustomConversions() {
return new MongoCustomConversions(Arrays.asList(new MoneyReadConverter()));
}
@Override
public void run(ApplicationArguments args) throws Exception {
//逻辑代码
···
}
Use MongoRepository
Adicione a anotação EnableMongoRepositories para habilitar o suporte
Código falso
@Slf4j
@SpringBootApplication
@EnableMongoRepositories
public class MongoRepositoryDemoApplication implements CommandLineRunner {
@Autowired
private CoffeeRepository coffeeRepository;
public static void main(String[] args) {
SpringApplication.run(MongoRepositoryDemoApplication.class, args);
}
@Bean
public MongoCustomConversions mongoCustomConversions() {
return new MongoCustomConversions(Arrays.asList(new MoneyReadConverter()));
}
@Override
public void run(String... args) throws Exception {
//逻辑代码
···
}
Classe CoffeeRepository
package geektime.spring.data.mongodemo.repository;
import geektime.spring.data.mongodemo.model.Coffee;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
public interface CoffeeRepository extends MongoRepository<Coffee, String> {
List<Coffee> findByName(String name);
}
Digressão: por que injetar o bean de MongoCustomConversions
O método MoneyReadConverter converte o documento em dinheiro
Como o Spring Data mongoDB é configurado no Spring Boot
mongoDataAutoConfiguration sob mongo sob dados sob autoconfig de inicialização de primavera
Verifica-se que um mongoCustomConvertions é passado no meio, que não contém nenhuma conversão, então podemos substituí-lo, desde que passemos na conversão definida por nós mesmos
E também marcado com a anotação ConditionalOnMissingBean, ou seja, nenhum Bean não contém nenhuma conversão é usado por padrão